295 votes

Nom de la fonction JavaScript

Comment puis-je accéder à un nom de fonction d’à l’intérieur de cette fonction ?

181voto

La meilleure chose à faire est :

Remarque : L’utilisation de est non standard et est interdit en mode strict.

156voto

nus Points 1613

inspiré par la réponse de Vlad :

Si vous avez une référence à la fonction, vous pouvez faire :

4 lignes se réduit à un seul, avec des appels de fonction au moins...

Il sacrifie une lisibilité, et sauf s’il est dans le code critique de performances, je dirais certainement il rap dans une fonction.

73voto

wildcard Points 2443

ce que vous faites sont l’attribution sans nom fonction à une variable. vous avez probablement besoin d’expression de la fonction nommée à la place ( http://kangax.github.com/nfe/ ).

Cependant je ne sais pas combien multi-navigateurs c'est-à-dire ; Il y a un problème avec IE6 qui rend la fuite nom vous de la fonction de la portée externe. en outre, arguments.callee est peu obsolète et se traduira par erreur si vous utilisez `` .

17voto

Jacob Mouka Points 736

Cela pourrait fonctionner pour vous:

function foo() { bar(); }

function bar() { console.log(bar.caller.name); }

l'exécution de foo() renverra "foo" non défini ou si vous appelez à partir d'une fonction anonyme.

Il travaille avec des constructeurs de trop, auquel cas elle serait sortie le nom de l'appelant le constructeur (par exemple "Toto").

Plus d'infos ici: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/Caller

Ils prétendent qu'il est non-standard, mais aussi qu'il est pris en charge par tous les principaux navigateurs: Firefox, Safari, Chrome, Opera et IE.

9voto

plodder Points 1307

Tu peux pas. Fonctions ne possèdent des noms selon la norme (même si mozilla a cet attribut) - ils peuvent être uniquement affectés aux variables avec les noms.

Aussi votre commentaire :

à l’intérieur de la fonction my.namespace.myFunc.getFn

Ce que vous pouvez faire est de retourner le constructeur d’un objet créé par nouveau

On peut donc dire

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X