js中call跟apply的用法

js中call和apply的用法
说白了这两个方法可以像调用其他对象的方法一样调用函数。


先说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