从内部获取函数名称

假设我有一个function:

function test1() { } 

我想从内部返回“test1”。 我发现你可以做arguments.callee ,这将返回整个函数,然后做一些丑陋的正则表达式。 有更好的方法吗?

命名空间函数怎么样?

是否有可能获得他们的名字:例如:

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

我想从内部返回foo这个例子。

更新:对于arguments.callee.name Chrome返回空白,IE9返回undefined。 它不适用于范围函数。

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

您没有给该函数命名。 您正在将test2foo属性分配给匿名函数。

arguments.callee.name仅在使用function foo(){}语法声明function foo(){}时有效。

这应该工作:

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