javascript - arguments.le destinataire de l'appel.toString() et des arguments.le destinataire de l'appel.le nom ne renvoie pas le nom de la fonction

Je vais essayer d'obtenir le nom de la fonction courante. De ce que j'ai lu, cela devrait être possible à l'aide de:

(arguments.callee.toString()).match(/function\s+(\[^\s\(]+)/)

Cependant, lorsque je l'exécute dans Firefox et Safari (versions les plus récentes sur Mac) le nom n'est pas retourné.

de la console.log( arguments.le destinataire de l'appel ) renvoie la source de la fonction, mais pas le nom attribué. les arguments.le destinataire de l'appel.nom renvoie une chaîne vide.

Mon exemple de code est comme suit:

var testobj = {
    testfunc: function(){
        console.log( (arguments.callee.toString()).match(/function\s+(\[^\s\(]+)/) );
    }
}
testobj.testfunc();
Puis-je vous demander, pourquoi voulez-vous/besoin de faire cela?
Yah. Donc, je suis en train de travailler sur un projet de compagnie impliquant la fonction de chaînage. J'ai environ 50 différentes fonctions qui s'exécutent tous le même code, sauf qu'une variable donnée est défini comme le même nom de la fonction. Je veux réduire l'ensemble de la duplication d'une seule fonction qui détecte le nom de la fonction appelante et l'utilise comme nom de la variable qui est actuellement codé en dur. Avec cette méthode, je peux définir l'ensemble de mes fonctions dans une seule ligne.
toString() ing fonctions comme ceci (aka la fonction de "décompilation") a ses verrues. Voir perfectionkills.com/those-tricky-functions, perfectionkills.com/detecting-built-in-host-methods, my.opera.com/hallvors/blog/show.dml/1665828 et my.opera.com/hallvors/blog/2007/07/07/...
Je dois dire que je suis assez déçu par l'complètement pisse pauvres réponses à cette question, aucun d'entre eux semblent comme ils ont été testés que ce soit

OriginalL'auteur Geuis | 2009-12-20