比如html中一个div通过document.getElementById等dom方法得到的是dom对象,那么在通过dom方法得到dom对象之前这个div在内存中保存了什么数据,以什么形式保存在内存中的,能通过dom方法得到dom对象。还是说页面初始化时就对div保存了dom对象。
还有,当var dom=document.getElementById(id);得到的dom变量对象无用时就要做释放,dom=null;那么此时释放的是dom对象的内存空间吧。这样只能说明初始化时div保存在内存中的不是dom对象,那么到底是什么形式保存的这个标签的信息数据的。
各浏览器内核的实现方式不一样,所以在内存中是怎么存储的也不一样,不过,一般情况下都是以树的形式保存的。而且dom的渲染一般也是和js的控制分离的,所以这个问题需要你针对具体的浏览器来分析,以及正确理解浏览器中渲染引擎和js引擎的原理。
你说的和我的问题有关,但应该不是主要的关系,楼下的说得已经很近了,不过还是没有太明白这里面的关系。
一般来说,整个网页在内存中是以DOM树形结构存储在内存中的。所有标签都是这个树上的一个节点。你通过方法找到一个节点,也只是拿到了这个节点的引用。给你的变量赋空,也只是说明你不再引用它了。你既没有创建这个对象,也不能销毁它。你能决定的只是是不是引用它。
这里如果变量赋值只是一个引用的话, 那变量只要保存所引用的节点在内存中的地址就行了,那其实变量所占的空间也没多大,那为什么要做手工释放呢。 我 的理解是之所以要手工释放的这块的内存,不只变量的,还有变量所引用的那个dom对象的内存(这块会占比变量内存大的多的空间)。这个dom对象的内存就不会是那个树节点的引用了。那 这样你说的就不符合了。