Mam funkcję zdefiniowaną w obiekcie tak:
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);
}
}
}));
}
Kompilator maszynopis zatrzymuje i tworzy w ten sposób:
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);
}
}
}));
};
Uwaga ten wiersz w JS:
_this.errorChecker(data, function (data)
Kompilator słusznie zauważył mój wykorzystanie => operatora i stwierdził, że thisw moim oryginalnym maszynopisie powinna odnosić się do obiektu nadrzędnego, a nie co thisdzieje się, gdy callback sukces jest rzeczywiście wywołana. Ale z jakiegoś powodu kompilator zapomniał włączyć magiczną linię:
var _this = this;
Na początku funkcji. Czy to błąd? Czy jest to zgodne z projektem? Jeśli po prostu zignorował _this / to coś zupełnie, chcę tylko powiedzieć, że robię to źle, ale to się dzieje tu w połowie drogi, która kojarzy mi się coś jest nie tak.
Aktualizacja : dziwnie to wydaje się być problem z kompilatorem Visual Studio, jeśli mogę skopiować ten sam kod do zabaw to działa zgodnie z oczekiwaniami.













