如何在此示例中从函数内获取变量名称:
// 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;
...at <anonymous>:2:5
。我尝试了一些其他的面向对象的方法,比如将一个方法注入到object.constructor.prototype中,然后从对象本身执行它,或者简单地添加一个方法来返回堆栈到对象本身,但无论哪种方式,执行该方法似乎仍然会输出运行一个无名构造函数的堆栈.. :( - user257319var 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
你实际上想要达成什么目标?我相信有其他方法可以实现它。
var myNameInChrome = /.*Object\.(.*)\s\(/.exec(new Error().stack)[0];
var myNameInFF = new Error().stack.split("@")[0];