从内部获取函数名称

use*_*076 5 javascript jquery

假设我有一个功能:

 function test1() {

       }
Run Code Online (Sandbox Code Playgroud)

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

命名空间函数怎么样?

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

var test2 = 
{
 foo: function() {
    }
};
Run Code Online (Sandbox Code Playgroud)

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

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

Roc*_*mat 7

var test2 = {
   foo: function() {
   }
};
Run Code Online (Sandbox Code Playgroud)

您没有给该函数命名.您正在将foo属性分配给test2匿名函数.

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

这应该工作:

var test2 = {
   foo: function foo() {
      console.log(arguments.callee.name); // "foo"
   }
};
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是`arguments.callee`和`arguments.caller`正在被弃用. (5认同)