如何在此示例中从函数中获取变量名称:
// it should return A
var A = function(){ console.log(this.name); }
有类似的东西吗?
答案 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];