我正在尝试创建我自己的每个类似于jquery。我得到了预期的输出。我不确定为什么在callback.call中提供“this”会使我的代码工作。是否有其他方法可以实现相同的行为?
function print(val){
console.log(val);
}
function each(list, callback){
for(var i = 0; i < list.length; i++){
callback.call(this, list[i]);
}
}
var list = [1, 2, 3];
each(list, print);
答案 0 :(得分:0)
以下是您所做的解释。使用call
函数,第一个参数是定义被调用函数的“this”。这意味着,如果我在myFunction.call(1, 2, 3);
myFunction
内进行this == 1, param1 == 2, param2 == 3
。
使用“正常”调用myFunction(1)
调用该函数不会设置此项。所以这次param1 == 1
。