1

我的情况是我必须克隆一个元素,读取它的属性和其他解析功能,但是现在因为我不这样做,element.parentNode.appendChild(clonedElement)如何从内存中删除这个克隆?

var clonedElement = element.cloneNode();

// do some stuff with it

clonedElement = null; // is this good enough?

所以,是的,clonedElement = null;足以从记忆中清除它吗?

4

1 回答 1

3

如果要删除变量对 DOM 节点的引用,请使用

element = null;

由于 Javascript 是垃圾收集的,因此您不需要自己删除对象,当无法再引用它们时,它们将被删除。

如果被删除的 DOM 元素是无引用的(没有指向它的引用),那么是的,垃圾收集器以及与之关联的任何事件处理程序/侦听器都会拾取该元素本身。

如果存在仍然指向所述元素的引用,则该元素及其事件侦听器将保留在内存中。

var removeChilds = function (node) 
{
    var last;
    while (last = node.lastChild) node.removeChild(last);
};

removeChilds( element ) ;
element=null;
于 2016-12-15T11:39:43.577 回答