gpt4 book ai didi

javascript - 调用时无法读取未定义的属性 X

转载 作者:行者123 更新时间:2023-11-30 19:10:29 25 4
gpt4 key购买 nike

所以我有课

class A {
test() {
return 1;
}
foo() {
return this.baz(this.bar)
}
bar() {
return this.baz(this.test);
}
baz(f){
return f();
}
}

当我调用方法时 foo

var a = new A();
a.foo();

我明白了

Uncaught TypeError: Cannot read property 'baz' of undefined
at bar (<anonymous>:9:15)
at A.baz (<anonymous>:12:10)
at A.foo (<anonymous>:6:15)
at <anonymous>:1:3

如何在调用方法 f() 后 this 变成未定义的,我该如何解决这个问题?

最佳答案

这样做:

return this.baz(this.bar)

您只是传递了一个函数,而没有指定 this 它的 this 指的是什么(没有它的上下文)。所以最终,当你进入baz(f)方法时,你得到的是一个函数作为参数,而不是类的方法一个。所以它的 this 是未定义的。要修复它,您有两个选择,第一个是更改 foo() 方法:

foo() {
return this.baz(this.bar.bind(this))
}

第二个是改变baz(f)方法:

baz(f){
return f.call(this);
}

这两种解决方案都适用于这种情况。希望对你有帮助

关于javascript - 调用时无法读取未定义的属性 X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58538112/

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