我注意到_.bind
中有 _.bindAll
和 Underscore 。我想知道你什么时候使用一个而不是另一个?如果您需要绑定多个 this
,您会使用哪一个怎么办?
答案 0 :(得分:3)
他们做的很相似,但却完全不同。 _.bind()
函数用于将单个函数绑定到对象,而_.bindAll()
用于将对象的部分或全部函数值属性绑定到对象。
因此,当您遇到需要使用固定接收器调用函数的任何情况时_.bind()
非常有用,并且_.bindAll()
在处理更多“对象”代码时非常有用。当您拥有属性为函数的对象时就是这种情况,并且这些函数期望(要求)以对象作为接收者调用它们,以便它们可以访问其他函数。
Underscore文档中的示例进一步说明。
请注意,现代JavaScript运行时环境在Function原型上有一个.bind()
方法,在我看来应该优先于_.bind()
。
编辑 - 关于必须为多个对象创建绑定函数的问题,答案是_.bind()
和_.bindAll()
都没有解决这个问题。您只需以某种方式迭代并以适当的方式收集绑定函数。