Brakuje _this definicji

głosy
1

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.

Utwórz 08/10/2012 o 18:33
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
0

To wygląda jak robaka. Należy otworzyć pozycję pracy do śledzenia tego.

Odpowiedział 08/10/2012 o 18:51
źródło użytkownik

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