Я следовал учебнику по созданию секундомера JavaScript и пытаюсь расширить его для работы. с несколькими секундомерами (несколько экземпляров класса). У меня проблема в том, что когда я пытаюсь отобразить текущее значение, пока часы тикают, мне нужно жестко закодировать экземпляр класса, потому что использование «этого» не работает (в строке, где я использую 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?
http://www.quirksmode.org/js/this.html
Я включил как строку жестко закодированного значения, так и строку «эта», которая не работает.
Спасибо,
Герайнт
self
, плагины, jQuery, даже Google, потому что это плохо. И при использовании вне глобальной области видимости никак не конфликтует сwindow.self
- person adeneo   schedule 02.07.2014