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.













