WEB开发网
开发学院网页设计JavaScript JavaScript面向对象程序设计(4): 函数 阅读

JavaScript面向对象程序设计(4): 函数

 2009-09-11 00:00:00 来源:WEB开发网   
核心提示: function sum() { var total = 0; for(var i = 0; i < arguments.length; i++) { total += arguments[i]; } alert(total);}sum(1, 2);sum(1, 2, 3);argumen

function sum() {
        var total = 0;
        for(var i = 0; i < arguments.length; i++) {
                total += arguments[i];
        }
        alert(total);
}
sum(1, 2);
sum(1, 2, 3);

arguments的行为很像数组,但它并不是数组。可以使用typeof操作符看一下,也可以调用它的constructor属性。

这里有一点需要说明,arguments有个callee属性,可以调用arguments自身所在的函数。也就是说,可以通过这个属性递归调用函数自身。所以,即使是匿名函数,也可以实现递归调用。如:

function sum(n) {
        if(n <= 1) {
                return 1;
        }
        return n + arguments.callee(n - 1); // 递归调用自身
}
alert(sum(100));

我觉得大家都会知道这个著名问题的答案的。

3. 函数也是对象

回想一下上面的第三个语句,它已经强烈暗示了,函数其实也是对象!那么,作为一个对象,函数应该具有对象的一切特性:添加属性、删除属性、作为返回值等等。是的!JavaScript的函数就是这么样的!

function hello() {
        alert("Hello!");
}
hello.name = "Tom"; // 添加属性
alert(hello["name"]);
delete hello.name; // 删除属性
alert(hello.name);
// 赋值给变量
var hello1 = function() { alert("hello1"); };
hello1();
// 作为数组元素
function show(x) { alert(x); }
var arr = [show];
arr[0](5);
// 作为函数的参数
function callFunc(func) {
        func();
}
callFunc(function() {
        alert("Inner Function.");
});
// 作为函数的返回值
function show() {
        return function(n) {
                alert("number is " + n);
        };
}
show()(10);

瞧!凡是对象可以做到的,函数统统都能做到!JavaScript中的函数就是对象!

现在我们已经从数组,逐渐开始到对象和函数。这些都是基本概念,后面,我们将对JavaScript的面向对象特性做进一步的介绍。

出处: http://devbean.blog.51cto.com/448512/164238

编缉推荐阅读以下文章

  • JavaScript面向对象程序设计(8): 优雅的封装还是执行的效率?
  • JavaScript面向对象程序设计(7): 闭包
  • JavaScript面向对象程序设计(6): 封装
  • JavaScript面向对象程序设计(5): 类
  • JavaScript面向对象程序设计(3): 对象
  • JavaScript面向对象程序设计(2): 数组
  • JavaScript面向对象程序设计(1): 前言
  • 理解JavaScript面向对象的思路
  • Javascript面向对象详解(第一部分)
  • JavaScript面向对象的支持(下)

上一页  1 2 3 

Tags:JavaScript 面向 对象

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接