gpt4 book ai didi

javascript - 如何使用绑定(bind)方法覆盖已绑定(bind)函数的 `this` 值

转载 作者:行者123 更新时间:2023-11-28 12:15:32 28 4
gpt4 key购买 nike

我编写了以下代码。这里 getGreeting 已经与 Salutation 绑定(bind)。当使用 bind() 将 getGreetingmyName 绑定(bind)时,它仍然使用 Salutation 类的上下文进行调用。

let myName = {
name: 'John'
}
class Salutation {
constructor() {
this.name = 'Mike';
this.getGreeting = this.getGreeting.bind(this)
}
getGreeting() {
return `Hi. My name is ${this.name}`
}
}
const salutation = new Salutation();
console.log(salutation);

boundFunction = salutation.getGreeting.bind(this);
boundFunction();// My name is Mike

boundFunction = salutation.getGreeting.bind(myName);
boundFunction();// My name is Mike

最佳答案

你不能。

bind 创建一个新函数 (B),它使用特定的 this 调用原始函数 (A)。

尝试重新绑定(bind)它会创建另一个新函数 (C),该函数使用特定的 this 调用前一个函数 (B)。然而,B 并不关心 this 的值是什么,它仍然使用最初被告知使用的值来调用 A。

关于javascript - 如何使用绑定(bind)方法覆盖已绑定(bind)函数的 `this` 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50394116/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com