Cette dactylographiée flèche définitions?

voix
2

J'ai écrit cet objet littéral dans tapuscrit:

var object = {
    message: Say,
    say: () => {
        return this.message;
     }
};

Et je suis tel code JavaScript généré:

var object = {
    message: Say,
    say: function () {
        return _this.message;
    }
};

Ne devrait pas y avoir cette ligne avant la déclaration de retour:

 var _that = this;

comme je suis en utilisant l'expression de la fonction de flèche?

Créé 10/10/2012 à 00:00
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
2

=>est un peu d'un danger ici parce que, de façon critique, il se lie thisà la portée de englobantethis . Dans la génération de code, la var _this = this;ligne passe au- dessus de l'objet littéral et votre sayfonction retourne simplement undefined.

Vous ne voulez jamais utiliser thisdans une =>expression si vous voulez vraiment faire référence à thisqui serait présent dans le cadre englobante. Dans ce cas particulier, vous ne (vous voulez que le champ intérieur this, soit l'objet lui - même littéral).

Créé 10/10/2012 à 00:25
source utilisateur

voix
2

Tu as raison. Il manque le:

var _this = this;

Ceci est découvert après la sortie (0,8) et est actuellement fixé sur la branche de développement.

Note: Je pense aussi que vous vouliez écrire

var object = {
    message: "Say",
    say: function () {
        return () => this.message;
    }
};

qui actualy imprimer Say quand il est exécuté. Voir: http://wiki.ecmascript.org/doku.php?id=harmony:arrow_function_syntax

Créé 10/10/2012 à 00:03
source utilisateur

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