Javascript 这个.someFunction.bind(这个)是多余的吗?
我正在阅读某人的代码,我看到以下内容:Javascript 这个.someFunction.bind(这个)是多余的吗?,javascript,Javascript,我正在阅读某人的代码,我看到以下内容: this.device\u name.changes().onValue(this.changeName.bind(this)) 据我所知,onValue接受一个回调函数,该函数是this.changeName.bind(this))。如果我错了,请纠正我: 函数调用中this的默认值指调用函数的对象 执行函数时,.bind(someObject)方法会使函数的this引用someObject 知道这一点(呵呵),this.changeName.bin
this.device\u name.changes().onValue(this.changeName.bind(this))
据我所知,onValue
接受一个回调函数,该函数是this.changeName.bind(this))
。如果我错了,请纠正我:
- 函数调用中
的默认值指调用函数的对象this
- 执行函数时,
方法会使函数的.bind(someObject)
引用this
someObject
this.changeName.bind(this)
似乎是多余的:调用this.changeName
时this
的默认值将与bind
参数中传递的this
相同
所以!函数是否可以安全地重构为简单的
this.changeName
,且行为没有差异?否,绑定在这里非常重要
函数的此
指针在调用函数时设置。在本例中,调用位于调用回调的任何对象的内部。许多对象只是使用this指针作为null或(对于DOM对象)指向DOM对象本身进行调用
以这种方式使用bind函数返回一个新函数,该函数将
this
引用硬连接到传递给bind的值。如果您取出绑定,它将完全阻塞此
指针。它肯定会改变行为。为什么不试试呢?不,不是,除非changeName
不使用这个。为什么你不能自己检查一下呢?)这个项目非常大,我不知道这一行在哪里执行。这是我一眼看到的东西。你自己试试看:var f=this.someMethod;f()请注意,这与仅this.someMethod()不同
如果函数不使用this
,那么跳过绑定就可以了,例如:fetch(“/”)。然后(Math.max)。然后(alert)
啊,我现在开始理解了。假设onValue
看起来像function(callback){…callback()}
。当callback()
运行时,这个值(不带bind的值)的默认值是什么?有一个(当然还有一个答案)。因为调用是callback()
,而不是someObject.callback()
,所以这个值将为空。或者可能是未定义的,我不太清楚。但肯定没有什么有用的。