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