1

我注意到有_.bindand_.bindAllUnderscore。我想知道你什么时候用一个而不是另一个?如果你有多个this需要绑定,你会使用哪一个?

4

1 回答 1

3

好吧,他们做类似但完全不同的事情。函数用于将_.bind()单个函数绑定到对象,而将对象的_.bindAll()部分或全部函数值属性绑定到对象。

因此_.bind(),当您遇到任何需要使用固定接收器调用函数的情况_.bindAll()时非常有用,并且在您使用更多“客观”代码时非常有用。当您拥有具有函数属性的对象时就是这种情况,并且这些函数期望(要求)以对象作为接收者来调用它们,以便它们可以访问其他函数。

Underscore 文档中的示例进一步解释。

请注意,现代 JavaScript 运行时环境.bind()在 Function 原型上有一个方法,(在我看来)应该优先于_.bind().

编辑——关于你必须为多个对象创建绑定函数的问题,答案是两者都没有,也没有_.bind()解决_.bindAll()这个问题。您只需要以某种方式迭代并以某种适当的方式收集绑定函数。

于 2012-09-01T15:08:58.943 回答