我遵循了有关创建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而不是仅此而引起的,我如何修改代码以使其与Timer的任何实例一起使用?
我已经包括了硬编码的值行和行不通的“ this”行。
谢谢,
如果要使this属性一致,则应绑定正在调用的函数。
this
例如,
setInterval(function() { /* code here */ }.bind(this), 500)
这样,this内部功能的便与外部功能的相同。