有人可以解释
背后的逻辑Function.prototype.call.bind(Array.prototype.forEach);
当我读到' bind'函数赋予函数,在函数上称为executs对象的上下文。
但在这种情况下绑定接收功能。所以根据我的说法,这不是直观的语法。 如果我还有进一步的
myOtherFunction.call(this)
呼叫是否仍然与forEach的上下文相关联?
答案 0 :(得分:1)
Array.prototype.forEach
是一个绑定到数组上下文的方法。因此,您可以轻松地遍历数组,如:
[1,2,3].forEach(function(x){ console.log(x) })
这相当于:
[].forEach.call([1,2,3],function(x){ console.log(x) })
因此,您将[1,2,3]
作为通话的当前上下文(this
)传递给forEach()
。
Function.prototype.call.bind(Array.prototype.forEach);
做的是调用(call
)bind
函数与另一个函数(Array.prototype.forEach
)作为变量的当前上下文。
var forEach=Function.prototype.call.bind(Array.prototype.forEach);
字面意思是:»如果在forEach
上进行了函数调用,如果您处于Array.prototype.forEach
的上下文中,请像对待它一样调用它。«
它是[].forEach.call(this,function)
有关详细参考,请参阅Function.prototype.call(),Function.protoype.bind()上的MDN。