获取匿名函数名称

时间:2013-01-06 01:16:36

标签: javascript function variables anonymous-function names

如何在此示例中从函数中获取变量名称:

// it should return A
var A = function(){ console.log(this.name); } 

有类似的东西吗?

4 个答案:

答案 0 :(得分:10)

该功能是匿名的;它没有名字。但是,你可以给它一个名字:

var A = function a() {};

然后可以通过Function.name访问其名称:

var A = function a() {};
A.name
> 'a'

答案 1 :(得分:4)

我知道这是一个旧线程,但仍然在搜索结果中。所以仅供参考:

解决方案可能只是使用堆栈跟踪。

var stack = new Error().stack;

使用trim和split来获得所需的值。

答案 2 :(得分:2)

不,Javascript中没有类似的东西。该函数是匿名的,因此它没有名称,你想要的是不明确的,因为函数可以很容易地引用任何数量的变量,如:

var a, b, c, d;
a = b = function(){ console.log(this.name); };
c = b;
d = c;
a = b = 5;
// a and b no longer refer to the function, but c and d both do

你实际上想要完成的是什么?我确信还有另一种方法可以实现它。

答案 3 :(得分:2)

最近版本的Chrome和Firefox可能如下所示。我只建议将其用于调试目的(例如,非生产中的javascript跟踪)

var myNameInChrome = /.*Object\.(.*)\s\(/.exec(new Error().stack)[0];
var myNameInFF = new Error().stack.split("@")[0];