Страницы: 1
Доброго времени суток.
Пишу небольшое расширение, вроде всё более-менее ясно и даже работает. Но. Вот часть JS-кода:
var gTimer = { preferences: null, autorun: null, timer: null, min: 0, hour: 0, interval: 1, nullLabel: true, init: function() { this.hour = 0; this.min = 0; this.preferences = Components.classes["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefService) .getBranch("extensions.gtimer."); this.preferences.QueryInterface(Components.interfaces.nsIPrefBranch2); this.preferences.addObserver("", gTimer, false); // почему здесь gTimer ? gTimer.interval = this.preferences.getIntPref("interval"); this.autorun = this.preferences.getBoolPref("autorun"); if(this.autorun) setTimeout("gTimer.start()", 100); }, observe: function(subject, topic, data) { if(topic != "nsPref:changed") return; switch(data) { case "interval": { this.interval = subject.getIntPref("interval"); break; } case "autorun": { this.autorun = subject.getBoolPref("autorun"); break; } } }, // дальше остальной код
Собственно вопрос в единственном комментарии, а относится он к строчке под этим самым комментарием. Почему в этой строке нужно писать именно так, а не через this, как во всём остальном скрипте. Причём, если написать через this, то значение свойства правильно сохраняется в переменной interval (проверял через alert), но при обращение позже к этой переменной в другой функции её значение равно 1 (т.е. заданному по умолчанию).
Отсутствует
Страницы: 1