簡體   English   中英

缺少_this定義

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM