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对象构成。

  • 相关阅读:
    尝试一个“建立知识”的过程
    webscheduler 开源定时服务和延迟服务
    两款自定义表单设计器
    IIS应用池保持激活工具开发
    写文章 使用conda管理python环境
    conda 虚拟环境
    Java设计模式
    转:数据标准化/归一化normalization
    转:理解矩阵
    转:为何梯度反方向是函数值下降最快的方向
  • 原文地址:https://www.cnblogs.com/huankfy/p/1773458.html
Copyright © 2011-2022 走看看