window.setInterval使用本地函数

时间:2011-11-27 04:42:28

标签: javascript scope

我正在使用window.setInterval,它必须能够访问“类”中定义的方法,但由于setInterval位于与方法不同的范围内this中定义的window解析为Game,而不是Game.update的所需实例。我可以使用哪些代码来获得调用window.update而不是game = function () { /* ... */ this.update = function () { /* ... */ } this.interval = window.setInterval(this.update /* !!! */, 50); } 所需的行为?

(这看起来有点令人困惑。也许以下错误的代码可以清除一点。)

{{1}}

2 个答案:

答案 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()支持的插件脚本。