- 每个函数都包含两个非继承而来的方法:apply()和call()。
- 他们的用途相同,都是在特定的作用于中调用函数。
- call()与apply()的第一个参数都是需要调用的函数对象,在函数体内这个参数就是this的值,剩余的参数是需要传递给函数的值,call()与apply()的不同就是call()传的值可以是任意的,而apply()传的剩余值必须为数组。
call()方法:
语法:call([thisObj[,arg1[,arg2[,[,argN]]]]])
定义:调用一个对象的一个方法,以另一个对象替换当前对象。
参数: thisObj-可选项。被用作当前对象的对象。argN-可选项。将被传递方法参数序列。
说明: call()方法可以用来代替另一个对象调用一个方法。
apply()方法
语法: apply([thisObj[,argArray]])
定义: 应用某一对象的一个方法,用另一个对象替换当前对象。
常用实例
// 使用add来替换sub
function add(a,b){
alert(a+b);
}
function sub(a,b){
alert(a-b);
}
add.call(sub,3,1);
/*apply用法
*add.apply(sub,[3,1]);
*/
/////////////////////////////////////////
运行结果为:alert(4);
add.call(sub,3,1)==add(3,1)
call方法还有更多应用,与继承相关,相关内容稍后再做了解。