试图重写每一个 - 有更好的方法吗?

时间:2016-06-17 03:17:31

标签: javascript loops

我正在尝试创建我自己的每个类似于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);

1 个答案:

答案 0 :(得分:0)

以下是您所做的解释。使用call函数,第一个参数是定义被调用函数的“this”。这意味着,如果我在myFunction.call(1, 2, 3); myFunction内进行this == 1, param1 == 2, param2 == 3

使用“正常”调用myFunction(1)调用该函数不会设置此项。所以这次param1 == 1