Manquant _this définition

voix
1

J'ai une fonction définie dans un objet comme celui-ci:

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

Le compilateur dactylographiée prend cela et produit ceci:

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

Notez que cette ligne dans les js:

_this.errorChecker(data, function (data)

Le compilateur a correctement remarqué mon utilisation de l'opérateur => et a conclu que thisdans mon tapuscrit original doit se référer à l'objet parent et non ce qui thisarrive à être quand le rappel de succès est en fait appelé. Mais, pour une raison quelconque le compilateur a oublié d'inclure la ligne magique:

var _this = this;

Au début de la fonction. Est-ce un bug? Ou est-ce par la conception? Si juste ignoré les _this / cette chose tout à fait, je dirais simplement que je fais mal, mais ça va à mi-chemin ici qui me fait penser quelque chose ne va pas.

Mise à jour : curieusement , cela semble être un problème avec le compilateur dans Visual Studio, si je copie le même code dans le terrain de jeu fonctionne comme prévu.

Créé 08/10/2012 à 18:33
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Cela ressemble à un bug. Vous devez ouvrir un élément de travail pour suivre ce sujet .

Créé 08/10/2012 à 18:51
source utilisateur

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