1

htmlCollection が配列から継承されないのはなぜですか? スナップショットである配列とは対照的に、htmlCollection はライブ コレクションであることは理解していますが、それでも配列から継承することはできませんか?

htmlCollection を arrayに変換する明白な方法がありますが、それはそれを変換しています。デフォルトではそうではありません。

アップデート

これは、以下のコメントに関するものです。

HTMLCollectionは配列ですか?– @ウィンハウズ

コメントで説明されているように、これら 2 つの質問は大きく異なります。もう1つの質問は、上記の質問にも書いた2つの違いを説明しています。私の質問は、JavaScript のデフォルトの htmlCollection が配列から継承されないのはなぜですか。

2 つの質問の違いは、もう1 つの質問は「違いは何ですか」であり、私の質問は「なぜ違いがあるのか​​」です。

4

1 に答える 1

0

Q:「htmlCollection が配列から継承されないのはなぜですか?」


A:これは、htmlCollection が JavaScript 配列とはまったく関係がないためです。1 つ目は DOM によって作成された DOM オブジェクトで、2 つ目は JS Array コンストラクターによって作成されます。JS Array コンストラクターとは無関係であるため、DOM htmlCollection は当然配列から何も継承しません。

htmlCollectionの長さプロパティはそれらの間の唯一の共通プロパティですが、配列の長さとは対照的に、DOM htmlCollection プロパティは読み取り専用です。

おそらく最も関心のある部分は、htmlCollection が JS 配列によって公開されたほとんどのメソッドを利用できるという事実です。また、 HTMLCollectionプロトタイプに直接割り当てることができます。このコンストラクターは、ご覧のとおり、JS オブジェクト コンストラクターを指します。

ps: htmlCollectionオブジェクトは 、どちらも配列ではなくオブジェクト コンストラクターによって呼び出されるため、他の何よりも引数オブジェクトにはるかに似ています。

于 2016-05-12T03:52:14.793 に答える