this. somefunction .bind(this)是否多余?

Is this.someFunction.bind(this) redundant?

本文关键字:this 多余 是否 somefunction bind      更新时间:2023-09-26

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

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

据我所知,onValue有一个回调函数,这个函数就是this.changeName.bind(this))。如果我说错了请纠正:

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

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

如此!该函数可以安全地重构为简单的this.changeName而没有行为上的差异吗?

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

函数的this指针是在调用函数时设置的。在这种情况下,调用在调用回调的对象内部。许多对象只是使用this指针进行调用,要么为空,要么(在DOM对象的情况下)指向DOM对象本身。

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