Mangler _this definisjon

stemmer
1

Jeg har en funksjon som er definert i et objekt som dette:

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

Loggfila kompilatoren hadde og produserer dette:

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

Merk denne linjen i JS:

_this.errorChecker(data, function (data)

Kompilatoren har korrekt lagt merke til min bruk av => operatør og konkluderte med at thisi mitt opprinnelige Loggfila bør se det overordnede objektet og ikke hva thissom skjer å være når suksessen tilbakeringing er egentlig heter. Men for noen grunn kompilatoren har glemt å ta med den magiske linjen:

var _this = this;

Ved starten av funksjonen. Er dette en feil? Eller er dette med design? Hvis det bare å ignorere _this / dette ting helt, vil jeg bare si at jeg gjør det galt, men det kommer halvveis her som gjør at jeg tror noe er galt.

Oppdatering : merkelig dette synes å være et problem med kompilatoren i Visual Studio, hvis jeg kopierer den samme koden i lekeplassen det fungerer som forventet.

Publisert på 08/10/2012 klokken 17:33
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Dette ser ut som en bug. Du bør åpne et arbeidselement for å spore dette.

Svarte 08/10/2012 kl. 17:51
kilden bruker

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