你什么时候使用_.bind vs _.bindAll?

时间:2012-09-01 15:03:26

标签: javascript backbone.js underscore.js

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

1 个答案:

答案 0 :(得分:3)

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

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

Underscore文档中的示例进一步说明。

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

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