"Uncaught TypeError: undefined is not a function" when calling function withing object

"Uncaught TypeError: undefined is not a function" when calling function withing object

var spaceship = {
fps : 10,
speed : 1,
traveled : 0,
currency : 0,
initialize : function() {
    this.update();
},
update : function() {
    this.traveled += this.speed/this.fps;
    setTimeout(this.update, 1000/this.fps);
    this.render();
},
render : function() {
    $("#spaceshipbg").attr("background-position", "0px "+this.traveled+"px");
}
};

$(document).ready(function() {
spaceship.initialize();
});

所以这是我的代码,每当我加载页面时,我都会收到行 "this.render()" 的错误。我在这里看不到问题,我可以从初始化函数成功调用 this.update(),但是当我调用 this.render() 时它说它是未定义的

调用initialize时,它会调用this.update()update() 本身有效,即使是第一次调用 this.render()。但是,setTimeout 将调用 update,但不会在您的对象上调用它。因此,this 将不再引用您的对象。 this.render() 未定义。

有关该问题的更多信息,read this

解决方案可能如下所示:

update : function() {
    var self = this;
    this.traveled += this.speed/this.fps;
    setTimeout(function() {
      // Enforce the correct context
      self.update();
    }, 1000/this.fps);
    this.render();
},