xxxFunction.call(obj,[param1[,param2[,...[,paramN]]]])
obj:这个对象将代替xxxFunction类里this对象,(跟apply中的obj一样);
params:这个是一个参数列表(即逗号隔开的零个或多个参数),不是数组;
var func = function(a,b){
console.log(a+b);
}
那么func.call(this,1,2)将输出3。
再看underscore.js里面一段代码:
var createCallback = function(func, context, argCount) {
if (context ===void 0) {return func;}
switch (argCount ==null ? 3 : argCount) {
case 1: returnfunction(value) {
returnfunc.call(context, value);
};
case 2: returnfunction(value, other) {
returnfunc.call(context, value, other);
};
case 3: returnfunction(value, index, collection) {
returnfunc.call(context, value, index, collection);
};
case 4: returnfunction(accumulator, value, index, collection) {
returnfunc.call(context, accumulator, value, index, collection);
};
}
return function() {
returnfunc.apply(context, arguments);
};
};
那么以下代码:
var func =function(num,other){
num =num+other;
console.log("num:"+num);
}
var callbackFun =createCallback(func,null);
callbackFun(5,6);
将输出11。