gpt4 book ai didi

javascript - 当方法分配给变量时,ES6 失去作用域

转载 作者:太空宇宙 更新时间:2023-11-04 00:22:40 25 4
gpt4 key购买 nike

我发现了意想不到的行为。谁能解释为什么当方法引用变量时“this”会丢失,如下例所示?

class Foo {
static bar() {
return 'bar';
}

baz() {
return this.constructor.bar();
}
}

const foo = new Foo();

foo.baz(); // works fine

const baz = foo.baz;

baz(); // TypeError: Cannot read property 'constructor' of undefined

要点:https://gist.github.com/sznowicki/c076c52a0242c77a3044f4a79e9af4c3

最佳答案

而不是:

const baz = foo.baz;

你可以这样做:

const baz = foo.baz.bind(foo);

这将确保运行时在方法调用中 foo 绑定(bind)到 this:

baz();

请参阅文档以获取更多信息:

关于javascript - 当方法分配给变量时,ES6 失去作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44001922/

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