Manca _this Definizione

voti
1

Ho una funzione definita in un oggetto come questo:

    connect(callback?: (connected: bool) => void) {
        $.ajax(this.url + /connect, $.extend(true, {}, this.ajaxSettings, {
            success: (data) => {
                this.errorChecker(data, (data) => {
                    if (callback != null) {
                        callback(data);
                    }
                });
            },
            timeout: this.timeout,
            error: () => {
                if (callback != null) {
                    callback(false);
                }
            }
        }));
    }

Il compilatore dattiloscritto prende questo e produce questo:

        VAS.prototype.connect = function (callback) {
            $.ajax(this.url + /connect, $.extend(true, {
            }, this.ajaxSettings, {
                success: function (data) {
                    _this.errorChecker(data, function (data) {
                        if(callback != null) {
                            callback(data);
                        }
                    });
                },
                timeout: this.timeout,
                error: function () {
                    if(callback != null) {
                        callback(false);
                    }
                }
            }));
        };

Nota questa riga nel js:

_this.errorChecker(data, function (data)

Il compilatore ha giustamente notato il mio uso del operatore => e ha concluso che thisnel mio dattiloscritto originale dovrebbe fare riferimento all'oggetto padre e non tutto ciò che thissembra essere quando il callback successo è effettivamente chiamato. Ma, per qualche motivo il compilatore ha dimenticato di includere la linea magica:

var _this = this;

All'inizio della funzione. è un insetto? O è questo disegno? Se semplicemente ignorato le _this / questa cosa del tutto, mi piacerebbe solo dire che sto facendo male, ma sta andando a metà strada qui che mi fa pensare che qualcosa non va.

Aggiornamento : stranamente questo sembra essere un problema con il compilatore in Visual Studio, se copio lo stesso codice nel parco giochi funziona come previsto.

È pubblicato 08/10/2012 alle 18:33
fonte dall'utente
In altre lingue...                            


1 risposte

voti
0

Questo appare come un bug. Si dovrebbe aprire un elemento di lavoro per tracciare questa.

Risposto il 08/10/2012 a 18:51
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more