zoukankan      html  css  js  c++  java
  • Web前端编程:勿混淆NodeList与Array

      今日在博客园看了一篇<javascript:像操作Array一样操作NodeList>,发现有些问题,后来查阅了W3C标准,发现其混淆了DOM中的NodeList和javascript的Array。

      NodeList和Array是不同的东西。NodeList是DOM中定义的一个辅助对象,而Array是程序语言定义的一个数据结构。

      NodeList是DOM中定义一个对象,在W3C文档中可以看到:

      The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live.

      接口定义为:

    1 interface NodeList {
    2   Node item(in unsigned long index);
    3   readonly attribute unsigned long length;
    4 };

      从上面的描述可以看到,W3C规定了NodeList的接口,如何实现依赖于各浏览器。现在各浏览器都实现了DOM,只是实现的Level不一样(DOM目前是Level3,Level3只有少部分浏览器支持其中的一部分功能)。

      所以,在实际编程中,不要把NodeList和Array对象混淆了。

      比如,在web编程中,可能我们会这么用:

    1 var divDoms = document.getElementsTagName("div");
    2 for(var index=0; i<divDom.length;i++)
    3    // do something
    4 

      当得到divDoms对象后,其上的操作就向Array一样,误以为其为Array,而实际是不同的东西。

      另外,脚本语言并不能直接操纵DOM,而需要通过BOM(Brower Object Module),才能与浏览器窗口进行交互。DOM是有一些列Node构成的,而BOM则是有一些列Object对象构成。

  • 相关阅读:
    java学习之实例变量初始化
    rip中的连续子网以及不连续子网
    扫描工具
    WScript.SendKeys()的sendkeys发送组合键以及特殊字符
    sql 查询包含字符的数量统计
    leetcode题1Two sum 练习
    vs 2015密钥
    前端 边界圆角
    前端 字体样式
    前端 高级选择器 伪类选择器
  • 原文地址:https://www.cnblogs.com/huankfy/p/1773458.html
Copyright © 2011-2022 走看看