window.setInterval 使用本地函数

xsz*_*nix 1 javascript scope

我正在使用window.setInterval,并且它必须能够访问在“类”中定义的方法,但由于setInterval它位于与其定义的方法不同的范围内,因此this解析为window而不是所需的Game. 我可以使用什么代码来获得所需的调用行为Game.update而不是window.update

(这看起来有点令人困惑。也许下面的错误代码可以让事情变得更清楚。)

game = function () {
    /* ... */
    this.update = function () {
        /* ... */
    }
    this.interval = window.setInterval(this.update /* !!! */, 50);
}
Run Code Online (Sandbox Code Playgroud)

mat*_*sko 5

这可以在没有 JS 框架的情况下完成。

var game = function() {
  this.update = function() { }
  var that = this;
  setInterval(function() {
    that.update.apply(that);
  },50);
}
Run Code Online (Sandbox Code Playgroud)