我正在使用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)
这可以在没有 JS 框架的情况下完成。
var game = function() {
this.update = function() { }
var that = this;
setInterval(function() {
that.update.apply(that);
},50);
}
Run Code Online (Sandbox Code Playgroud)