La palabra clave "this" en los métodos de evento cuando se usa el objeto prototipo de JavaScript

Estoy intentando acceder a las variables miembro de una clase de prototipo en JavaScript en un controlador de eventos, algo que usualmente usaría la palabra clave "this" para (o "that" [copia de esto] en el caso de los controladores de eventos) . No hace falta decir que estoy teniendo algunos problemas.

Tomemos, por ejemplo, este fragmento de código HTML:

<a id="myLink" href="#">My Link</a>

Y este código de 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);
}

La creación de una instancia de un objeto MyClass y la llamada a NormalMethod funciona exactamente como lo espero (alerta diciendo "valor"), pero al hacer clic en el enlace se obtiene un valor indefinido porque la palabra clave "this" ahora hace referencia al objetivo del evento (el elemento HTML delimitador ()) .

Soy nuevo en el estilo de prototipo de JavaScript, pero en el pasado, con los cierres, simplemente hice una copia de "esto" en el constructor:

var that = this;

Y luego pude acceder a las variables de los miembros en los métodos de eventos a través del objeto "ese". Eso no parece funcionar con código prototipo. ¿Hay otra manera de lograr esto?

Gracias.

Respuestas a la pregunta(4)

Su respuesta a la pregunta