2016-01-10 137 views
0

我一直在寻找答案,但我发现的一切似乎都是说我没有做错任何事情。我试图在另一个内部调用原型函数,但我不断收到错误,它不是一个函数。JavaScript无法在另一个内部调用原型函数

出于某种原因,它只发生在一个特定的方法(滴答)内,其余的方法没有问题。

这里是我的代码:

Timer.prototype.getTimeRemaining = function(){ 
    return this.startTime - this.currentTimeTimed; 
} 

Timer.prototype.updateElement = function(){ 
    document.getElementById("clock").innerHTML = this.getTimeRemaining(); 
    return true; 
} 

Timer.prototype.tick = function(){ 
    if (this.running){ 
    this.currentTimeTimed += timePassedInMilliseconds; 
    } 
    this.getTimeRemaining(); 
    this.updateElement(); 
} 

,所以我得到的错误是在蜱():遗漏的类型错误:this.getTimeRemaining()不是一个函数。

在测试更多时,我想我找到了原因:我认为这是因为tick函数是从一个区间中调用的。我不确定,但那是我能想到的唯一与其他功能不同的东西。但是我不知道如何改变我的代码,如果它是由间隔引起的。

在此先感谢。

+1

也许你有一些bindind问题...请告诉我们你的'setInterval'。 – juliobetta

+0

在tick中的'this.getTimeRemaining()'行放置一个断点。当它停在那里时,检查'this'的值。从那里继续。 –

回答

1

我发现我需要在我的setInterval中使用.bind(this)。

+0

您可以考虑使用致电或申请: http://stackoverflow.com/questions/1986896/what-is-the-difference-between-call-and-apply – ovgu12

相关问题