typescript 在函数内部无法识别“this”

hkmswyz6  于 2023-04-07  发布在  TypeScript
关注(0)|答案(2)|浏览(284)

我定义了一个属性,但当我试图从setInterval匿名函数内部访问它时,它无法被识别。

this.game.seconds = 6;
  useTimer() {
    let timer = setInterval(
      function () {
        this.game.seconds--;//here the keyword this is not being recognized
      }, 1000
    );
  }
moiiocjp

moiiocjp1#

出现问题的原因是您没有使用箭头功能。
箭头函数从其外部执行上下文获取this
ref提到:
箭头函数提供了自己的this绑定(它仍然是封闭的词法上下文的this值)。
阅读更多关于this的无绑定。
所以我只想说:

let timer = setInterval(
  () => {
    this.game.seconds--; // 'this' takes its value from the outer context
  }, 1000
);
bgtovc5b

bgtovc5b2#

好吧,我可以用箭头函数来实现我的目标,正如Dummy评论的那样,gsamaras回答了我的问题:

this.game.seconds = 6;
  useTimer() {
    let timer = setInterval(
      () => {
        this.game.seconds--;
      }, 1000
    );
  }

更多信息在这里。

相关问题