Javascript 从内部获取函数名

Javascript 从内部获取函数名,javascript,jquery,Javascript,Jquery,假设我有一个函数: function test1() { } 我想从内部返回“test1”。我发现可以执行参数.被调用方,它将返回整个函数,然后执行一些丑陋的正则表达式。还有更好的办法吗 那么名称空间函数呢 是否也可以获得他们的名字: e、 g: 对于这个例子,我想从内部返回foo 更新:对于arguments.callee.name,Chrome返回空白,IE9返回未定义。而且它不适用于作用域函数 var test2 = { foo: function() {

假设我有一个函数:

 function test1() {

       }
我想从内部返回“test1”。我发现可以执行
参数.被调用方
,它将返回整个函数,然后执行一些丑陋的正则表达式。还有更好的办法吗

那么名称空间函数呢

是否也可以获得他们的名字: e、 g:

对于这个例子,我想从内部返回foo

更新:对于arguments.callee.name,Chrome返回空白,IE9返回未定义。而且它不适用于作用域函数

var test2 = {
   foo: function() {
   }
};
您没有给函数命名。您正在将
test2
foo
属性分配给匿名函数

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

这应该起作用:

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

可能重复和的可能重复。可能重复值得注意的是
参数。被调用方
参数。调用方
正在被弃用。请注意,当函数运行时,它不知道它“属于”test2。(因为它不“属于”,只是
test2
碰巧有一个引用该函数的属性
foo
;您可以创建对同一函数的其他引用。根据您如何调用它,它可能对该对象有
this
引用。)在IE 8及更低版本中失败,这里有一个很好的检查,为什么他们不是一个好主意。
var test2 = {
   foo: function foo() {
      console.log(arguments.callee.name); // "foo"
   }
};