12

私はChrome v22.0.1229.94 mを使用していますが、それは問題ではありませんが、念のために:-)

携帯性は私には関係ありません。Chrome (および Safari) で動作する限り、私は満足しています。

foo と bar の 2 つの関数があります。

var foo = function() {
  ...
}
function bar() {
  ...
}

次に、それらを使用してオブジェクトを作成すると:

f1 = new foo();
b1 = new bar();

bar のコンストラクター名は取得できますが、foo のコンストラクター名は取得できません。

> f1.constructor.name  ==> ""
> b1.constructor.name  ==> "bar"

どちらの場合でも、変数f1b1を調べると、DevTools コンソールに「foo」と「bar」という名前が表示されます。

DevTools ができるように、 f1の名前 fooを抽出するにはどうすればよいですか?

ここに画像の説明を入力

4

2 に答える 2

8

V8 は、解析段階で関数名の推論を実行し、API を介してこの情報を公開できます。通常のオブジェクト プロパティを使用してこの情報を抽出することはできません。

于 2012-10-18T09:09:56.833 に答える
2

の場合、関数式fooを作成しています。つまり、無名関数を変数に割り当てているということです。

関数に名前を付けて「名前付き関数式name」を作成しない限り、そのように関数をプログラムで解決することはできません。

var foo = function foo() {
  ...
}
于 2012-10-17T23:07:09.980 に答える