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()
,所以
这个
值将为空。或者可能是未定义的,我不太清楚。但肯定没有什么有用的。