0

ECMASCRIPTは、プロトタイプオブジェクトをコンストラクターのプロトタイププロパティとして定義します。

以下はECMA-262からコピーされたものです。

4.3.4オブジェクトを作成および初期化するコンストラクター関数オブジェクト注コンストラクターの「prototype」プロパティの値は、継承および共有プロパティを実装するために使用されるプロトタイプオブジェクトです。

HTMLDivElement.constructor.prototype == HTMLDivElementなのはなぜですか?

aがHTMLDivElementオブジェクトの場合、Object.getPrototypeOf(a)はHTMLElementを返しますが、HTMLDivElementであるconstructor.prototypeを返す必要があります。

これはECMA標準とは完全に矛盾しています。

この概念を理解するのを手伝ってください...よろしくお願いします。

ここに画像の説明を入力してください

4

2 に答える 2

3

Chrome コンソールに次のように表示されます。

HTMLDivElement.constructor.prototype == HTMLDivElement

間違い

コンソールに表示されるという事実HTMLDivElementは、それがHTMLDivElement.

また:HTMLDivElement.constructor.prototype == HTMLElement.constructor.prototype

于 2012-04-04T18:22:01.033 に答える
1

HTMLDivElementw3c によってインターフェイスとして定義されているため ( http://www.w3.org/TR/html5/the-div-element.html#htmldivelementを参照)、その実装はブラウザーのベンダーによって異なります。

Chrome では適切なコンストラクターではありません (実行しようとするだけですnew HTMLDivElement)。Firefox ではコンストラクターではありません (オブジェクトです)。

于 2012-04-04T18:27:11.220 に答える