javascript 学习笔记2-函数
2009-09-06 00:00:00 来源:WEB开发网每个函数都有prototype属性,它引用的是预定义的原型对象。这个原型对象在new一个object时起作用,也就是当你 new调用一个构造函数时起作用。这个原型对象在你定义自己的对象类时也常用,也起到了很重要的作用。
length
函数也有length属性,只是我们比较少用,它指的是这个函数在定义是所指定的参数的个数,而不是像arguments的length一样指的是实质传入函数的参数的个数。因此,我们可以写个函数,用来指定传入的参数个数是否是指定的,从而对那些对参数个数有严格要求的函数的调用进行控制:
Js代码
function check(){
var expectedNum = arguments.callee.length;
var actedNum = arguments.length;
if(parseInt(expectedNum)!=parseInt(actedNum)){
throw new Error(”调用的参数与函数定义时期望的参数个数不符合!”);
}
}
注意上面是用arguments的callee属性来引用自身(因为在函数体内其它的方法无法指定函数本身)。
定义自己的函数属性
这里的“定义自己的函数属性”指的是:有时你想用一个全局变量时,而这个全局变量只在某个函数体内使用,并没有在其它的函数体内被使用。这时候,可以考虑把它定义为这个函数的属性并当作全局变量来使用,如下:
Js代码
f.counter = 0;
function f(){
return f.counter++;
}
在上面的代码中把counter不作为全局变量,而作为f的属性,在f的函数体内用f.counter来引用这个变量,它也起到了全局变量的效果,可以保存之前变化的值。
方法apply()和call()(apply和call较难理解,可参看收藏的相关内容)
1、 使用这两个函数可以像调用其它对象的方法一样来调用函数。
2、 第一个参数是要调用的函数的对象,在函数体内这一参数是this的值(不太理解)
3、 其它的参数是参数值。Apply与call一样,只不过传递的参数是数组。
如:
f.call(o,1,2)相当于:
o.m = f;
o.m(1,2);
delete o.m;
又如:
Var maxNum = Math.max.apply(null,array_of_num);
编缉推荐阅读以下文章
- javascript 学习笔记3-构造函数、类和原型
- javascript 学习笔记1-对象和数组
Tags:javascript 学习 笔记
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接