6

Firefox と Chrome のコンソールで何が起こったかについては、以下を参照してください。

> var f = function() {}
undefined
> f.name = 'f'
"f"
> f.name
""
> f.id = 1
1
> f.id
1

なぜf.name = 'f'ノーオペレーションなのですか?

4

1 に答える 1

12

おそらく実装に依存します。

一部の実装でnameは、関数オブジェクトのプロパティが関数名として使用されます (関数名がある場合)。これらの場合、これはおそらく読み取り専用です。

これは非標準の機能です。

例えば:

var foo = function bar() {};

alert(foo.name); // will give "bar" in some cases. 

Firefox や Chrome で、いじってみたら変わらない…

var foo = function bar() {};

foo.name = "baz";
alert(foo.name); // still "bar" in Firefox and Chrome

ここにドキュメントのいくつかの重要なポイントがあります...

規格外

「名前プロパティは、関数の名前、または無名関数の空の文字列を返します」

「関数の名前は変更できません。このプロパティは読み取り専用です」

于 2012-07-14T18:55:06.840 に答える