Dom 之我见

Dom Docuement object Module

那Dom到底是干什么的呢?为什么,我们操作了Dom就能直观的反应在元素上。

再此之前,我想先分享一段很简单的XML的DEMO.Demo 将会在附件中。

Demo 很简单,只是创建了一个XML文件,该文件中,也没有太多的节点。

Demo中,有个很有趣的地方引起了我得注意(呵呵,在编码的时候,我只是有这种猜想,所以,我做了个常识,结果是和我所想的一样的)

有趣的地方就是,我整个Demo中,只有一个title对象

(其实,我并不喜欢把titile 称为对象,这里,容许我制造个插曲,请看如下的代码:
  代码1:
  XmlText text=new XmlText();
     上面这段代码做了什么:我相信,只要学过面向对象的语言,你一定会说,创建了XmlText对象。那让我们再来看个语法
    代码2:
  XmlText text;
  这段代码又做了什么,我当初的老师是这么说的,这叫声明了一个对象。好像看来看去 text都是对象嘛。
     可是,我得理解为 text 就是个变量。可能这里会引起轩然大波,都什么年代了,还用变量一词。但是,请仔细分析以上两段代码,为什么XmlText text;时,内存没有为text开辟空间,那是因为,text 其实根本不是对象,在C#中,变量有两种类型,引用类型,值类型。其实,这种观念,脱胎于C语言,引用类型的变量,原始是什么,就是指针变量,引用类型的变量,他们存储的就是对象的引用。所以,代码1,我觉得或许该这么解读
    定义了一个XmlText 变量,并把对象的引用赋值给它。text只不过是个有用引用的变量,或许,我们该这么称呼text:对象变量。
    好了,插曲到此为止


 整个Demo中,我只做了以此XmlText text;放在了类得开始.然后,我每次需要添加文本节点,就使用text=document.createTextNode("string");这样,我的text中,就由拥有了一个新的引用。
然后,就是重点了document.append(text);这句话是说,把text添加到document中,那他到底添加text的什么呢?
其实,这里就是一个传参的问题,把text中的引用传给append函数,函数内部再将引用添加到一个树形结构中去.所以,从这里,我认为,XmlDOM就是一个由元素引用树再加上一堆封装好的方法组合起来的对象。
到这里,让我们回到最普遍的Dom,Dom用得最多的地方是httpDom 我个人认为,他也是如此,首先浏览器渲染HTML时,就需要为元素开辟内存空间,然后,再将内存空间的引用生成一颗树,这样,我们的HTTPDom就基本完工了。每一次,你调用某个方法
    例如,var temp=document.getElementById("id");//这句话,其实就是获取了id该元素的引用。
        temp.value="123"; //然后,我通过引用,修改其内容。这样,元素的值就被修改了,所以才能达到,所谓的修改DOM,来修改元素。

当然,以上所见,为我直观的猜测,希望高手们能够多多修正。
最后,当然是,感谢观看了。THKS

posted @ 2011-08-11 11:39  jayroe  阅读(265)  评论(2编辑  收藏  举报