Ключевое слово «this» в методах событий при использовании объекта-прототипа JavaScript
Я пытаюсь получить доступ к переменным-членам класса-прототипа в JavaScript в обработчике событий - что-то, для чего я обычно использую ключевое слово "this" (или "that" [копия этого] в случае обработчиков событий) , Излишне говорить, что у меня возникли проблемы.
Взять, к примеру, этот 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 работает точно так, как я ожидаю (оповещение говорит «значение»), но нажатие на ссылку приводит к неопределенному значению, поскольку ключевое слово «this» теперь ссылается на цель события (HTML-элемент anchor ()) ,
Я новичок в прототипе стиля JavaScript, но в прошлом, с замыканиями, я просто делал копию «this» в конструкторе:
var that = this;
И тогда я мог получить доступ к переменным-членам в методах события через «тот» объект. Кажется, это не работает с кодом прототипа. Есть ли другой способ добиться этого?
Благодарю.