我正在阅读某人的代码,我看到了以下内容:
this.device_name.changes().onValue(this.changeName.bind(this))
根据我的理解,onValue
采用回调函数,该函数为this.changeName.bind(this))
。如果我错了,请纠正我:
this
的默认值是指调用该函数的对象。.bind(someObject)
方法会导致函数this
引用someObject
。知道这个(嘿),this.changeName.bind(this)
似乎是多余的:调用this
时this.changeName
的默认值与{{1}中传递的this
相同参数。
原来如此!该函数是否可以安全地重构为bind
而行为没有差异?
答案 0 :(得分:2)
不,绑定在这里非常重要。
在调用函数时设置函数this
指针。在这种情况下,调用是在调用回调的任何对象内部。许多对象只是使用this指针调用null或(在DOM对象的情况下)指向DOM对象本身。
使用bind函数以这种方式返回一个新函数,该函数将this
引用硬连接到传递给bind的值。如果取出绑定,它将完全填满this
指针。它将绝对改变行为。