ECMAScript 5 は、ホスト オブジェクトのプロトタイプ チェーンについて何も述べていません。
これはWebIDLで定義されています。
具体的には、次のように書かれているECMAScript bindingsセクションを見てください。
特に指定しない限り、このセクションで定義されているオブジェクトの [[Prototype]] 内部プロパティは、Object プロトタイプ オブジェクトです。
そしてこれは、次のセクションから:
各 ECMAScript グローバル環境 ([ECMA-262]、セクション 10.2.3) には、制御が環境に関連付けられた ECMAScript 実行コンテキストに入る前に作成された、初期オブジェクトのそれぞれの独自の一意のセットが必要ですが、その環境のグローバル オブジェクトの後に作成されます。創造された。特定のグローバル環境内のすべての初期オブジェクトの [[Prototype]] は、同じグローバル環境から取得する必要があります。
例もあります:
iframe.appendChild instanceof Function; // Evaluates to true
最後に、Interface Prototype Objectセクションは次のように述べています (強調は私のものです):
特定のインターフェイス A の名前付きプロパティ オブジェクトには、次のような値を持つ内部 [[Prototype]] プロパティが必要です。
A が別のインターフェイスから継承するように宣言されていない場合、インターフェイスが [ArrayClass で宣言されている場合、A の内部 [[Prototype]] プロパティの値は Array プロトタイプ オブジェクト ([ECMA-262]、セクション 15.4.4) です。 ]、またはそれ以外の場合は Object プロトタイプ オブジェクト
([ECMA-262]、セクション 15.2.4)。
それ以外の場合、A は別のインターフェイスから継承します。A の内部 [[Prototype]] プロパティの値は、継承されたインターフェイスのインターフェイス プロトタイプ オブジェクトです。
したがって、DOM レベル 3 とDocument インターフェースを見ると、それが Node インターフェースから継承されていることがわかります。ノード インターフェイスは、他のものから明示的に継承していません。つまり、 から継承していObject.prototype
ます。
これは理論です:)
実際には、すべてのブラウザーがこの動作に従うわけではありませんが、最近のブラウザーのほとんどは確かにそうしています。