你什么时候用_.bind和_.bindAll

When do you use _.bind vs _.bindAll?

本文关键字:bindAll bind 什么时候      更新时间:2023-09-26

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

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

因此,当您遇到任何需要使用固定接收器调用函数的情况时,_.bind()都很有用,而当您使用更多"对象"代码时,_.bindAll()也很有用。当您有具有函数属性的对象时,就会出现这种情况,并且这些函数期望(要求)将对象作为接收器来调用它们,以便它们可以访问其他函数。

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

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

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