Obtenir le nom de la fonction de l'intérieur même

Disons que j'ai une fonction:

function test1() { } 

Je souhaite renvoyer "test1" à partir de lui-même. J'ai découvert que vous pouvez faire des arguments.callee qui va renvoyer toute la fonction et ensuite faire de la regex feinte. Une meilleure façon?

Qu'en est-il des fonctions de diffusion de noms?

Est-il possible d'obtenir leur nom aussi: par exemple:

 var test2 = { foo: function() { } }; 

Je veux retourner foo pour cet exemple à partir de lui-même.

Mise à jour: pour arguments.callee.name Chrome retourne vide, IE9 retourne indéfini. Et cela ne fonctionne pas avec les fonctions de portée.

 var test2 = { foo: function() { } }; 

Vous ne donnez pas à la fonction un nom. Vous assignez la propriété foo de test2 à une fonction anonyme.

arguments.callee.name ne fonctionne que lorsque les fonctions sont déclarées à l'aide de la function foo(){} syntaxe.

Cela devrait fonctionner:

 var test2 = { foo: function foo() { console.log(arguments.callee.name); // "foo" } };