8
votes

Objet JavaScript Méthode littéral: appel récursif

est-il possible d'appeler de manière récursive une méthode d'un objet littéral?

Par exemple: xxx

erreur: "F 'a été utilisé avant de définir. < / p>

merci.


0 commentaires

3 Réponses :


1
votes

Il n'y a pas de variable appelée f défini n'importe où dans votre code. Utilisez obj.f () (ou this.f si vous savez ce pointe sur l'endroit où il devrait).


0 commentaires

5
votes

f est une méthode sur votre objet. En conséquence, lorsque vous êtes dans F , Ceci sera l'objet auquel f est connecté. Afin d'appeler de manière récursive f , utilisez this.f () xxx


Notez simplement que l'intérieur du f < / code>, ceci ne sera l'objet actuel que si f est invoqué comme méthode: obj.f ();

Si vous faites quelque chose comme: obj.f.call (LALA); , alors ceci sera maintenant lala . Et si vous faites quelque chose comme: xxx

maintenant Ce est l'objet global à l'intérieur de f (ou non défini dans strict mode)


3 commentaires

Ceci peut ou non Pointer ou non sur obj en fonction de la manière dont f est appelé. Mieux vaut faire cela clair avant que cela mord le gars plus tard.


@Mattivirkkunen - En effet - édité. Merci pour la pointe et profitez de vos nouveaux badges :)


Yay !



17
votes

Vous pouvez, en utilisant une expression de fonction nommée : xxx

une lecture incorrecte: http://kangax.github.com/nfe/


2 commentaires

Cela devrait être la réponse choisie. Merci pour le lien aussi.


Qu'est-ce que cela fait exactement une fonction nommée fait qui contourne l'erreur? Créer sa propre fermeture?