Ich glaube, es ist eine philosophische Entscheidung des W3C. Das Design des W3C DOM [spec] ist ziemlich senkrecht zur Gestaltung von JavaScript, wie die DOM ist gemeint Plattform und sprachneutral sein.
Entscheidungen wie " getElementsByFoo()
gibt eine Bestellung zurück NodeList
" oder " querySelectorAll()
gibt eine zurück StaticNodeList
" sind sehr beabsichtigt, sodass Implementierungen sich nicht darum kümmern müssen, ihre zurückgegebene Datenstruktur basierend auf sprachabhängigen Implementierungen auszurichten (wie .map
sie in Arrays in JavaScript und Ruby verfügbar sind) nicht auf Listen in C #).
Das W3C Ziel niedrig: sie werden sagen , ein NodeList
eine enthalten sollten nur lesbar .length
Eigenschaft vom Typ unsigned long , weil sie glauben , dass jede Implementierung zumindest Unterstützung , dass , aber sie werden nicht sagen ausdrücklich , dass der []
soll Indexoperator immer Positionselemente zur Unterstützung überlastet werden, weil sie keine arme kleine Sprache unterdrücken wollen, die implementiert werden will, getElementsByFoo()
aber das Überladen von Operatoren nicht unterstützen kann. Es ist eine weit verbreitete Philosophie, die in weiten Teilen der Spezifikation vorhanden ist.
John Resig hat eine ähnliche Option wie Ihre geäußert , zu der er hinzufügt :
Mein Argument ist nicht so sehr, dass
NodeIterator
es nicht sehr DOM-ähnlich ist, sondern dass es nicht sehr JavaScript-ähnlich ist. Die in der JavaScript-Sprache vorhandenen Funktionen werden nicht optimal genutzt und optimal genutzt ...
Ich kann mich ein wenig einfühlen. Wenn das DOM speziell für JavaScript-Funktionen geschrieben wurde, wäre es viel weniger umständlich und intuitiver zu bedienen. Gleichzeitig verstehe ich die Designentscheidungen des W3C.