Javascript'对象没有方法'错误

时间:2012-07-10 18:38:32

标签: javascript node.js prototype runtime-error

这似乎是这个网站上的一个热门问题,但之前的答案并没有解决这个问题的实例。

我在node.js服务器上有一个游戏引擎的开头但是当我设置它时,我在loop方法中发生了以下错误:Object #<Timer> has no method update

我以为我正在设置原型以使用GameEngine.prototype.update = function(){ ... };

的更新方法

非常感谢任何帮助解决这个问题。谢谢。

以下是整个代码:

function GameEngine(){
    this.fps = 1000/60;
    this.deltaTime = 0;
    this.lastUpdateTime = 0;
    this.entities = [];
}

GameEngine.prototype.update = function(){
    for(var x in this.entities){
        this.entities[x].update();
    }
}

GameEngine.prototype.loop = function(){
    var now = Date.now();
    this.deltaTime = now - this.lastUpdateTime;
    this.update();
    this.lastUpdateTime = now;
}

GameEngine.prototype.start = function(){
    setInterval(this.loop, this.fps);
}

GameEngine.prototype.addEntity = function(entity){
    this.entities.push(entity);
}

var game = new GameEngine();
game.start();

1 个答案:

答案 0 :(得分:7)

  

这似乎是本网站上的热门问题

  

但之前的答案并没有解决这个问题的实例。

真的?你找到了哪些?


当超时/事件监听器/等执行函数时,“方法”(this)的上下文将丢失。

GameEngine.prototype.start = function(){
    var that = this;
    setInterval(function(){
       that.loop();
    }, this.fps);
}

GameEngine.prototype.start = function(){
    setInterval(this.loop.bind(this), this.fps);
}