看js权威指南里面关于call与apply方法的说明:我们可以将call()与apply()看作是某个对象的方法,通过调用方法的形式来间接调用函数。这样的解释未免使人糊涂啊。下面说一下自己的见解:其实call与apply根据字面意思就是表示函数的回调,其实用法和AS3中的call与apply相同。其中call()的第一个参数与apply()的第一个参数一样都表示要调用的函数的母对象,他是调用的上下文,在函数体内通过使用this来获得对他的引用。call()剩下的参数就是要传给调用的函数的参数列表。apply()除第一个参数外的另外一个参数就是要传给调用函数的参数了,只不过他是一个数组的形式,和call()的参数列表的形式不同罢了。
要想以对象ob的方法来调用函数fu(),可以这样使用call与apply.
fu.call(ob); fu.apply(ob);
在严格模式下call与apply的第一个参数都会变为this的值。哪怕传入的实参是原始值或是null,undefined。在非严格模式下传入的null与undefined都会被全局对象代替,而原始值都被相应的包装对象替代。
实例一:
var func=new function(){this.a="func"} var myfunc=function(x){ var a="myfunc"; var b = "bbbbb"; alert(this.b); alert(this.a); alert(x); } myfunc.call(func,"var");*/ /*var nu = Math.max.apply(Math,[1,3,4,6,7]); alert(nu);
实例二:
var nu = Math.max.apply(Math,[1,3,4,6,7]); alert(nu);
实例三:
function add(a, b) { alert(a + b); } function sub(a, b) { alert(a - b); } add.call(sub, 3, 1);
运行看看结果是怎样的,你就会理解。
http://www.cnblogs.com/huyong/p/4139875.html
时间: 2024-10-13 20:45:23