"This" keyword em métodos de evento ao usar o objeto de protótipo JavaScript
Eu estou tentando acessar as variáveis de membro de uma classe de protótipo em JavaScript em um manipulador de eventos - algo que eu normalmente usam a palavra-chave "this" para (ou "que" [cópia deste] no caso de manipuladores de eventos) . Escusado será dizer que estou correndo em algum problema.
Veja, por exemplo, este snippet de HTML:
<a id="myLink" href="#">My Link</a>
E esse código 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);
}
Instanciar um objeto MyClass e chamar NormalMethod funciona exatamente como eu esperava (alertar dizendo "valor"), mas clicar no link resulta em um valor indefinido porque a palavra chave "this" agora referencia o destino do evento (o elemento HTML anchor ()) .
Eu sou novo no estilo JavaScript protótipo, mas no passado, com encerramentos, eu simplesmente fiz uma cópia de "this" no construtor:
var that = this;
E então eu poderia acessar variáveis de membros em métodos de eventos através do objeto "that". Isso não parece funcionar com o código do protótipo. Existe outra maneira de conseguir isso?
Obrigado.