JS教程:call、apply、callee用法
时间:2011-02-21 来源:李惟
1、它是函数的方法或属性;
2、它可以改变执行上下文的this指向;
3、作为另一个对象调用一个方法(即可以把一个对象的方法作为另一个对象的方法来引用);
4、apply方法类似,但只能接收数组为参数;
5、callee函数的调用者。
f.call(o,1,2) 等同于
o.m = f;
o.m(1,2);
例1:
function o1(value){ if(value < 100){ this.value = value; }else{ this.value = 100; } } function o2(value){ o1.call(this,value); alert(this.value); } var o = new o2(133554) //100 改变了this的指向
例2:
function c1(){ this.m1 = function(){ alert(this.name); } } function c2(){ this.name = “mike”; } var nc1 = new c1(); var nc2 = new c2(); //必须 nc1.m1.call(nc2); //mike 把方法m1作为对象nc2的方法来引用
例3:
function o1(arg){ if (arguments[1] < 100) { this.value = arguments[1] ; } else { this.value = 100; } } function o2(arg){ o1.apply(this, arg); alert(this.value); } var o = new o2([101,60]) //60 参数只能是数组
callee用法,常用于匿名函数中
var factorial = function(x){ if(x <= 1){ return 1; } return x * arguments.callee(x - 1); } alert(factorial(5)); //120
相关阅读 更多 +