javascript 函数的属性
看到标题,列位看官可能有些迷惑了,啥玩意?函数还能有属性?没错,在javascript中函数还真就有属性,这是因为函数实际上是一种javascript对象,即Function对象。
既然是对象,那么当然就有自己的属性,这还不算,还可以自己为函数定义属性。同样函数也有自己的函数啊,这虽然有点怪,不过却是真的,这个函数的函数(咋这么别扭)我们下一篇再做讲解。
这里,我们先来看一下javascript函数的属性。
函数的length属性:
刚上一篇写过的arguments属性length一定会给有心人眼前一亮的感觉,现在我们就来看一下函数的length属性是干啥用的。
arguments.length表示的是实际上传给函数的参数的个数。而函数的length属性则代表函数需要的实际参数的数目。这是一个只读特性,说白了,就是在函数定义时你定义了几个参数,这个值就是几。
看到这里,您可能又要奇怪了。我咋获取这个函数的length属性啊?
别着急。上一篇中我不是提到了arguments的callee属性吗?这代表啥?这代表这个函数本身啊。
所以,我们就可以用arguments.callee.length来表示函数的length属性。
function check(args)
{
//arguments.length实际传的参数数目
var actual = args.length;
//真正需要传的参数的数目
var expected = args.callee.length;
if(actual != expected){
throw new Error("Wrong number of arguments:expected:" + expected + "; actually passed " + actual);
}
}
//在函数执行前调用check函数
function f(x,y,z)
{
//检查实际参数数目与所需数目(3个)是否相等
check(arguments);
//这里正常运行下面的内容
return x + y + z;
}
函数的prototype属性:
这个属性物是函数预定义的原型对象,在使用new运算符把作为构造函数时起作用,在定义新的对象类型时起着非常重要的作用。
因为“犀牛”这本书是在下一章才介绍这个属性,我也就先不写了,事实上是我也没有看,也不会,也写不出来。自嘲的大笑三声,哈~~
定义你自己的函数属性:
上面已经说了,函数是对象,那么也就可以自己定义属性。
我们在编程的时候都要讲低耦合,高内聚,职责单一,自己的活自己干,干应该干的活。
有的时候呢,我们需要使用一个在调用过程中都保持不变的值,使用Function对象的属性比定义全局变量更加方便,因为全局变量会使命名空间变的散乱。
//因为函数声明在执行代码前处理,所以在函数声明前不能真正实现这个赋值运算
uniqueInteger.counter = 0;
//函数实现功能:在每次调用的时候使返回值都不同,这就需要记录上一次的返回值
//而最了解自己的人永远是自己,自己的属性自己是了如指掌的,所以这里采用更改自己的属性
function uniqueInteger()
{
return uniqueInteger.counter ++;
}
document.write(uniqueInteger()+"<br/>");
document.write(uniqueInteger()+"<br/>");
document.write(uniqueInteger()+"<br/>");
函数的属性就写这些东西吧,多了我也写不出来,书上就只写了这么多,一般我写日志的格式是,书上的代码尽量照抄,抄之前自己会运行一下。呵。
再加上一些自己的言论,使自己记忆更加深刻一些。
还是重复那句口号:GOOD GOOD STUDY,DAY DAY UP~
文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2009/06/10/836/
版权所有 © 转载时必须以链接形式注明作者和原始出处!
好好学习,天天向上。
[回复]
@LAONB
呵呵,是啊,好好学习,天天向上。加油
[回复]