[英]Missing _this definition
我在這樣的對象中定義了一個函數:
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);
}
}
}));
}
TypeScript編譯器接受並生成以下代碼:
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);
}
}
}));
};
注意js中的這一行:
_this.errorChecker(data, function (data)
編譯器已經正確地注意到我使用=>操作符,並得出結論認為, this
在我原來的打字稿應該指的是父對象,而不是不管this
恰好是當成功回調實際上是調用。 但是,由於某種原因,編譯器已忘記包含魔術行:
var _this = this;
在功能開始時。 這是錯誤嗎? 還是這是設計使然? 如果它只是完全忽略了_this / this東西,我只是說我做錯了,但是到這里進行到一半,這讓我覺得有些問題。
更新 :奇怪的是,這似乎是Visual Studio中編譯器的問題,如果我將相同的代碼復制到操場上,它將按預期工作。
這看起來像個錯誤。 您應該打開一個工作項以對此進行跟蹤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.