4

この例の関数内から変数名を取得する方法:

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

このようなものはありますか?

4

4 に答える 4

11

その関数は匿名です。名前はありません。ただし、名前を付けることはできます。

var A = function a() {};

次に、その名前にアクセスできますFunction.name

var A = function a() {};
A.name
> 'a'
于 2013-01-06T01:24:25.540 に答える
5

これは古いスレッドですが、検索結果にはまだ表示されています。参考までに:

解決策は、単にスタックトレースを使用することです。

var stack = new Error().stack;

トリムとスプリットを使用して、目的の値を取得します。

于 2014-09-04T09:14:52.797 に答える
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

あなたが実際に達成しようとしていることは何ですか?それを達成する別の方法があると確信しています。

于 2013-01-06T01:19:04.440 に答える
2

ChromeとFirefoxの最近のバージョンでは、次のように可能です。私はこれをデバッグ目的でのみお勧めします(例:非本番環境でのJavaScriptトレース)

var myNameInChrome = /.*Object\.(.*)\s\(/.exec(new Error().stack)[0];
var myNameInFF = new Error().stack.split("@")[0];
于 2015-01-11T02:40:44.373 に答える