setInterval中的JS类方法不起作用

时间:2018-07-28 13:59:59

标签: javascript setinterval

我有一个带有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();

2 个答案:

答案 0 :(得分:4)

您需要使用bind

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

答案 1 :(得分:0)

您也可以尝试setInterval(() => this.main(), 5000)。 JavaScript中的this可能与您期望的程序源代码所建议的有所不同。参见MDN's take