我正在使用window.setInterval
,它必须能够访问“类”中定义的方法,但由于setInterval
位于与方法不同的范围内this
中定义的window
解析为Game
,而不是Game.update
的所需实例。我可以使用哪些代码来获得调用window.update
而不是game = function () {
/* ... */
this.update = function () {
/* ... */
}
this.interval = window.setInterval(this.update /* !!! */, 50);
}
所需的行为?
(这看起来有点令人困惑。也许以下错误的代码可以清除一点。)
{{1}}
答案 0 :(得分:4)
这可以在没有JS框架的情况下完成。
var game = function() {
this.update = function() { }
var that = this;
setInterval(function() {
that.update.apply(that);
},50);
}
答案 1 :(得分:0)
您需要将方法绑定到对象。
有关使用示例,请参阅https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind,以及为旧浏览器提供bind()支持的插件脚本。