Búsqueda de sitios web

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'); 
        })
    }
 }

Artículos relacionados