Javascript 原型函数调用和绑定

Javascript 原型函数调用和绑定,javascript,call,bind,Javascript,Call,Bind,有人能解释一下背后的逻辑吗 Function.prototype.call.bind(Array.prototype.forEach); 当我读到“bind”函数时,它被赋予一个函数,这个函数被称为要执行的对象的上下文 但在这种情况下,绑定接收函数。所以在我看来,这不是直观的语法。 如果我还有更多 myOtherFunction.call(this) is调用仍然与forEach的上下文连接?Array.prototype。forEach是绑定到数组上下文的方法。因此,您可以轻松地迭代如下

有人能解释一下背后的逻辑吗

Function.prototype.call.bind(Array.prototype.forEach);
当我读到“bind”函数时,它被赋予一个函数,这个函数被称为要执行的对象的上下文

但在这种情况下,绑定接收函数。所以在我看来,这不是直观的语法。 如果我还有更多

 myOtherFunction.call(this)

is调用仍然与forEach的上下文连接?

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)
does正在调用(
call
)另一个函数(
Array.prototype.forEach
)作为变量的当前上下文绑定
bind
函数

var forEach=Function.prototype.call.bind(Array.prototype.forEach);
字面意思是:»如果对
forEach
进行了函数调用,请像在
Array.prototype.forEach
的上下文中一样调用它 它是指向
[].forEach.call(此函数)的快捷方式。

有关更多参考资料,请参见MDN上的。

此处给出的完美示例