jquery - Accediendo a ambas variables 'this' en TypeScript
En TypeScript, si defines una función usando () => {...}, la variable this se referirá a la instancia de la clase circundante. Pero si usas function() {...}, la variable this tendrá su antigua interpretación de JavaScript.
¿Hay alguna manera de acceder a ambas variables this dentro de una función de TypeScript?
Ocasionalmente necesito esto al usar JQuery en TypeScript:
class X {
private v : string;
constructor() {
$('.xyz').on('change', function() {
this.v = $(this).prop('value'); // Two different this's
})
}
}
En la línea central del código, el primer this debería referirse al objeto de la clase X, mientras que el segundo this debería referirse al objeto JQuery que desencadenó el evento.
Respuesta #1
En el manejador de eventos change, this se referirá únicamente al elemento .xyz que provocó el evento. Si deseas una referencia a la clase contenedora X, entonces necesitas almacenar una variable que guarde esa referencia, así:
class X {
private v : string;
constructor() {
var _x = this;
$('.xyz').on('change', function() {
_x.v = $(this).prop('value');
})
}
}
