在此示例中,如何从函数中获取变量名称:
// it should return A
var A = function(){ console.log(this.name); }
有这样的事情吗?
在此示例中,如何从函数中获取变量名称:
// it should return A
var A = function(){ console.log(this.name); }
有这样的事情吗?
该函数是匿名的;它没有名字。但是,您可以为其命名:
var A = function a() {};
然后可以通过以下方式访问其名称Function.name
:
var A = function a() {};
A.name
> 'a'
我知道这是一个旧线程,但仍在搜索结果中。所以仅供参考:
一个解决方案可能只是使用堆栈跟踪。
var stack = new Error().stack;
使用修剪和拆分来获得所需的值。
不,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
你真正想要完成的是什么?我确信还有另一种方法可以实现它。
在 Chrome 和 Firefox 的最新版本中可能如下所示。我只推荐这个用于调试目的(例如非生产中的 javascript 跟踪)
var myNameInChrome = /.*Object\.(.*)\s\(/.exec(new Error().stack)[0];
var myNameInFF = new Error().stack.split("@")[0];