说白了这两个方法可以像调用其他对象的方法一样调用函数。
先说call的用方法:
var obj = {
arg1: 1,
arg2: 2
}
function f(a,b){
return this.arg1 + this.arg2 + a + b;
}
var r = f.call(obj,3,4); // r =10等同于:
var obj = {
arg1: 1,
arg2: 2
}
function f(a,b){
return this.arg1 + this.arg2 + a + b;
}
obj.m = f;
var r = obj.m(3,4);
delete obj.m;applay和call方法相似,只不过要传递的参数以数组的形式制定上面的代码调用apply可写成:
var obj = {
arg1: 1,
arg2: 2
}
function f(a,b){
return this.arg1 + this.arg2 + a + b;
}
var r = f.apply(obj,[3,4]); // r =10