我遵循了创建 JavaScript 秒表的教程,并尝试将其扩展为使用多个秒表(一个类的多个实例)。我遇到的问题是,当我试图在时钟滴答作响时显示当前值时,我需要对类实例进行硬编码,因为使用“this”不起作用(在我使用 console.log 的那一行)。我已将代码减少到最低限度以尝试理解这方面,并粘贴了以下内容:
function Timer(){
var time1 = null;
var time2 = null;
var timeLoop = null;
function getTime(){
var day = new Date();
return day.getTime();
}
this.start = function(){
time1 = getTime();
timeLoop = setInterval(function(){
time2 = getTime();
console.log(_Timer.duration());
//console.log(this.duration());
},500);
}
this.duration = function(){
return (time1 - time2) / 1000;
}
}
我认为下面的链接描述了我的问题,但我对它的理解还不足以在这里应用它。问题是由于所有者是 this.start 而不仅仅是 this,我该如何修改代码以使其适用于任何 Timer 实例?
http://www.quirksmode.org/js/this.html
我已经包含了硬编码值行和不起作用的“这个”行。
谢谢,
杰兰特