从我从其他帖子收集到的内容看起来似乎不可能,但为什么我不能像这样调用setInterval函数(略短的手)?
tick: function() {
var self = this;
setInterval(this.calculateTime, 1000);
}
我需要使用以下内容。
tick: function() {
var self = this;
setInterval(function(){this.calculateTime()}, 1000);
}
任何人都能解释为什么会出现这种情况并让我放心吗?
请参阅以下完整代码
var countdownTimer = {
init: function(end) {
this.endTime = new Date(end);
},
calculateTime: function(){
this.now = new Date();
this.difference = this.endTime - this.now;
this.seconds = Math.floor(this.difference / 1000);
this.minutes = Math.floor(this.seconds / 60);
this.hours = Math.floor(this.minutes / 60);
this.days = Math.floor(this.hours / 24);
this.hours %= 24;
this.minutes %= 60;
this.seconds %= 60;
},
tick: function() {
var self = this;
setInterval(function(){this.calculateTime()}, 1000);
}
}
countdownTimer.init('02/09/2016');
countdownTimer.calculateTime();
countdownTimer.tick();
答案 0 :(得分:0)
您可以将bind
用于您的目的:
setInterval(this.calculateTime.bind(this), 1000);