簡體   English   中英

獲取匿名函數名稱

[英]Get anonymous function 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;

使用trim和split來獲得所需的值。

不,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];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM