4

DOM NodeList (たとえば element.getElementsByTagName によって返される) は、スナップショットではなく、NodeList の作成後に行われたドキュメントへの変更を反映するという点で興味深いオブジェクトです。

そのようなコレクションをどのように実装するのか疑問に思っていました.完全に遅延評価は恐ろしく遅くなければなりませんが、キャッシュされたバージョンの一貫性を保つには、内部で多くの簿記が必要です.

この件に関するブログ記事をグーグルで検索し、関連する Mozilla のソース コード ファイルを見つけようとしましたが、すぐには何も見つかりませんでした (そして、何かがすぐに見つからない場合は、ここに来ます...)。

では、Firefox、Safari、Internet Explorer (およびその他の非ブラウザー DOM 実装) はどのように NodeList を処理するのでしょうか?

4

1 に答える 1

1

.NETのXMLライブラリには、戦略が異なるXmlNodeListの3つの内部サブクラスがあります。XmlNode.ChildNodesプロパティのXmlChildNodesコレクションは、含まれている要素への参照に基づく単純な遅延評価を使用します。XmlElementListは、DOMが変更されたときにイベントリスナーを使用します。3番目のXPathNodelListは、XPathクエリ(XmlNode.SelectNodes()など)用であり、インデックスにアクセスしたり、Countプロパティを読み取ったり、繰り返したりするたびにXPathを評価します。

于 2008-11-19T02:48:07.830 に答える