当我appendChild()
dom[0]
时,您会认为它dom[1]
移动并dom[2]
,但实际上它复制/复制了dom[0]
下面的元素,因为它们仍然是实际dom
数组的元素。
//.JS
var dom = [];
var element = new Array("div","p","h1");
for(var i=0; i < element.length; i++){
dom.push(document.createElement(element[i]))
}
dom[0].appendChild(dom[1]);
dom[0].appendChild(dom[2]);
console.log(dom); //div,p,h1
console.log(dom[0].children);//p,h1
console.log(dom.length); //3
问:什么时候会从内存中删除元素?
你的问题来自一个非常错误的假设:
数组dom
不镜像实际的DOM
结构。
您正在创建三个元素,并将对这些元素的引用分配给数组中。
您还将在DOM
本身中分配对这些元素的引用。
因此,每个元素最终都有两个指向它的引用——dom
数组和DOM
本身。
引用完全独立于元素本身。 您可以创建六个局部变量,这些变量都指向相同的元素。
在以下情况下,将释放元素:
- 没有什么仍然指代他们
- 这包括
dom
- 还有
DOM
- 和任何局部变量
- 这包括
- 垃圾回收器运行。