setInterval 中的 JS 类方法不起作用



我有一个简单的例子,其中有一个类的setInterval,它每5秒调用main((。当调用print((时,它会返回TypeError:this.print不是一个函数。我真的被卡住了。为什么如果我在没有setInterval的情况下调用main((,它工作得很顺利,但在使用setInterval时却失败了?这很奇怪。有没有解决方法可以在没有这个问题的情况下定期调用main((?

"use strict";
class test {
constructor() {
this.interval = setInterval(this.main, 5000);
}
print(){
console.log('Teeeessssttt');
}
main(){
this.print();
}
}
const a = new test();

您需要使用bind:

this.interval = setInterval(this.main.bind(this), 5000);

您也可以尝试setInterval(() => this.main(), 5000)。JavaScript中的this可能与程序源代码所建议的不同。请参阅MDN对此的看法。

最新更新