这个.someFunction.bind(这个)是多余的吗?

时间:2015-07-24 17:59:33

标签: javascript

我正在阅读某人的代码,我看到了以下内容:

this.device_name.changes().onValue(this.changeName.bind(this))

根据我的理解,onValue采用回调函数,该函数为this.changeName.bind(this))。如果我错了,请纠正我:

  • 函数调用中的this的默认值是指调用该函数的对象。
  • 当函数执行时,.bind(someObject)方法会导致函数this引用someObject

知道这个(嘿),this.changeName.bind(this)似乎是多余的:调用thisthis.changeName的默认值与{{1}中传递的this相同参数。

原来如此!该函数是否可以安全地重构为bind而行为没有差异?

1 个答案:

答案 0 :(得分:2)

不,绑定在这里非常重要。

在调用函数时设置函数this指针。在这种情况下,调用是在调用回调的任何对象内部。许多对象只是使用this指针调用null或(在DOM对象的情况下)指向DOM对象本身。

使用bind函数以这种方式返回一个新函数,该函数将this引用硬连接到传递给bind的值。如果取出绑定,它将完全填满this指针。它将绝对改变行为。