Я пытаюсь получить доступ к переменным-членам класса прототипа в JavaScript в обработчике событий - то, что я обычно использовал для ключевого слова "this" для (или "этого" [копии этого] в случае обработчики событий). Излишне говорить, что у меня проблемы.
Возьмем, к примеру, этот фрагмент HTML:
<a id="myLink" href="#">My Link</a>
И этот код JavaScript:
function MyClass()
{
this.field = "value"
this.link = document.getElementById("myLink");
this.link.onclick = this.EventMethod;
}
MyClass.prototype.NormalMethod = function()
{
alert(this.field);
}
MyClass.prototype.EventMethod = function(e)
{
alert(this.field);
}
Создание объекта MyClass и вызов NormalMethod работают точно так же, как я ожидаю (см. "Значение" ), но нажатие ссылки приводит к значению undefined, потому что ключевое слово "this" теперь ссылается на цель события (якорь() HTML).
Я новичок в стиле прототипа JavaScript, но в прошлом, с закрытием, я просто сделал копию "this" в конструкторе:
var that = this;
И затем я мог получить доступ к переменным-членам в методах событий через объект "тот". Это не похоже на прототип кода. Есть ли другой способ достичь этого?
Спасибо.