我有一个带有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();
答案 0 :(得分:4)
您需要使用bind:
this.interval = setInterval(this.main.bind(this), 5000);
答案 1 :(得分:0)
您也可以尝试setInterval(() => this.main(), 5000)
。 JavaScript中的this
可能与您期望的程序源代码所建议的有所不同。参见MDN's take。