Chybí _this definici

hlasů
1

Mám funkci definovanou v objektu, jako je tento:

    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);
                }
            }
        }));
    }

Strojopisu kompilátor trvá to a vytváří takto:

        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);
                    }
                }
            }));
        };

Poznámka: Tento řádek v JS:

_this.errorChecker(data, function (data)

Kompilátor správně všimli mé použití => a dospěl k závěru, že thisv mé původní strojopisu mělo odkazovat na nadřazeného objektu a ne, co thisse stane, že je-li úspěch callback vlastně volal. Ale z nějakého důvodu, že kompilátor zapomněl zahrnout magický řádek:

var _this = this;

Na začátku funkce. Je to chyba? Nebo je to záměrné? Je-li právě / ta věc úplně ignoroval _this bych jen říct, dělám to špatně, ale bude to na půl cesty sem, který je pro mě myslím, že je něco špatně.

Aktualizace : kupodivu to se zdá být problém s kompilátorem Visual Studio, když jsem zkopírovat stejný kód do hřišti to funguje, jak se očekávalo.

Položena 08/10/2012 v 18:33
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
0

Vypadá to jako chyba. Ty by měly otevřít pracovní položky sledovat to.

Odpovězeno 08/10/2012 v 18:51
zdroj uživatelem

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