我已阅读文档,并没有完全理解使用NodeList的优点。Javascript为什么要使用NodeList而不是使用数组
因为它就像数组(我知道它不是数组),所以使用NodeList代替它的优点是什么?
我已阅读文档,并没有完全理解使用NodeList的优点。Javascript为什么要使用NodeList而不是使用数组
因为它就像数组(我知道它不是数组),所以使用NodeList代替它的优点是什么?
NodeList实际上并不是真正的香草JavaScript构造,它是DOM API的一部分。类似于ecma规范不会包含诸如[HtmlElement]之类的类型,它也不会提及NodeList。
从哪里可以找到它在World Wide Web Consortium (W3C)的DOM api文档。
NodeList接口提供对节点的有序集合的抽象,没有定义或约束如何实现此集合。 DOM中的NodeList对象是活动的。
你不能(据我所知)创建一个NodeList。您可以访问一个,但不能创建一个供您自己使用。在这方面,这就是为什么在javascript中使用数组的原因。
NodeLists将是访问DOM中“活动”节点列表的结果。这意味着列表将在您更改时更新,或者在没有任何额外检测的情况下自动更改。
参见:http://www.w3schools.com/dom/dom_nodelist.asp优势NodeList
:
节点列表会保持自身的更新。如果元素被删除或添加,则在节点列表或XML文档中,列表会自动更新。
其中节点的Array
没有。
作者建议不要使用NodeLists,我不这样做。然而,这是一个很好的阅读,因为他的自以为是的方法和代码示例应该可以轻松掌握Array
和NodeList
之间的差异。
只有当DOM返回一个节点列表时,才使用NodeList。为什么DOM不返回一个数组或者至少有一个在其原型链中具有数组的类型?因为DOM被设计成不依赖于任何特定语言。 DOM API返回的所有类型将是主机类型而不是本机类型。这允许DOM是语言不可知的,并且不依赖于任何特定的语言结构。
当然,您可以通过调用或应用在NodeList上使用Array方法。例如。
Array.prototype.map.call(nodeList, function (a, index) { ... });
的“活”的NodeLists另一个有趣的属性是结合保持节点列表并返回它是API调用之间的数据。这种数据绑定会导致NodeList自动更新,以响应DOM操作,从而影响通话返回的节点。
*“我已阅读文档”* - 哪个文档? –