我已閱讀文檔,並沒有完全理解使用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操作,從而影響通話返回的節點。
*「我已閱讀文檔」* - 哪個文檔? –