¿Cómo acceder al 'este' correcto dentro de una devolución de llamada?
Tengo una función constructora que registra un controlador de eventos:
function MyConstructor(data, transport) {
this.data = data;
transport.on('data', function () {
alert(this.data);
});
}
// Mock transport object
var transport = {
on: function(event, callback) {
setTimeout(callback, 1000);
}
};
// called as
var obj = new MyConstructor('foo', transport);
Sin embargo, no puedo acceder aldata
Propiedad del objeto creado dentro de la devolución de llamada. Parece quethis
no se refiere al objeto que fue creado sino a otro.
También intenté usar un método de objeto en lugar de una función anónima:
function MyConstructor(data, transport) {
this.data = data;
transport.on('data', this.alert);
}
MyConstructor.prototype.alert = function() {
alert(this.name);
};
Pero exhibe los mismos problemas.
¿Cómo puedo acceder al objeto correcto?