获取匿名函数名(Get anonymous function name)

2019-07-17 21:20发布

如何从在这个例子中一个函数中获得的变量名:

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

有没有这样的事情?

Answer 1:

这个函数是匿名的; 它没有名字。 你可以,但是,给它一个名字:

var A = function a() {};

那么它的名字是通过访问Function.name

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


Answer 2:

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

一个解决方案可以简单地使用堆栈跟踪。

var stack = new Error().stack;

用修剪和分割,以得到所需的值。



Answer 3:

没有,有没有像在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

它是什么你实际上是要完成? 我敢肯定有另一种方式来实现这一目标。



Answer 4:

有可能在最新版本的Chrome和Firefox如下。 我只建议用于调试目的(如JavaScript的非生产追踪)

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


文章来源: Get anonymous function name