原型函数调用和绑定

时间:2014-08-10 14:44:11

标签: javascript call bind

有人可以解释

背后的逻辑
Function.prototype.call.bind(Array.prototype.forEach);

当我读到' bind'函数赋予函数,在函数上称为executs对象的上下文。

但在这种情况下绑定接收功能。所以根据我的说法,这不是直观的语法。 如果我还有进一步的

 myOtherFunction.call(this)

呼叫是否仍然与forEach的上下文相关联?

1 个答案:

答案 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);做的是调用(callbind函数与另一个函数(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。