4

for inループは、オブジェクト、プロトタイプ、およびコレクションのプロパティを反復処理するのに役立つことを認識しています。

実際には、繰り返し処理する必要がString.prototypeありconsole.log(String.prototype)ます。完全なプロトタイプが表示されますが、

for (var prop in String.prototype) {
    console.log(prop);
}

プロトタイプの要素の名前を表示するために、空であるかのように何も表示されません。

JavaScriptエンジンは基本的なプロトタイプメソッドを隠しますか、それとも私は何か間違ったことをしていますか?

4

3 に答える 3

5

仕様によると:

属性の値が名前付きプロパティのこの仕様で明示的に指定されていない場合は、表7で定義されているデフォルト値が使用されます。

表7—デフォルトの属性値

..。

[[列挙可能]]false

したがって、(すべての組み込みプロパティと同様に)列挙できません。

于 2011-10-14T16:52:40.400 に答える
3

他の人が言っているように、String.prototypeのすべてのプロパティは列挙できません。列挙不可能なものを含むすべてのプロパティのリストを取得するには、 Object.getOwnPropertyNames()を使用します(新しいブラウザのみ)

于 2011-10-14T16:57:13.663 に答える
1

ネイティブメソッドは、for(prop in obj)反復を通じて表示されません。

組み込みオブジェクトをループするときにプロパティを見つけることができます。この場合、ページはカスタムメソッドでプロトタイプを拡張しました。フレームワーク(jQueryなど)は、多くの場合、この方法で組み込みオブジェクトを変更します。

于 2011-10-14T16:51:52.677 に答える