Javascript:从内存中删除一个 element.cloneNode() [重复]

Posted

技术标签:

【中文标题】Javascript:从内存中删除一个 element.cloneNode() [重复]【英文标题】:Javascript: remove an element.cloneNode() from memory [duplicate] 【发布时间】:2017-04-30 23:21:54 【问题描述】:

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

var clonedElement = element.cloneNode();

// do some stuff with it

clonedElement = null; // is this good enough?

那么是的,clonedElement = null; 是否足以从内存中清除它?

【问题讨论】:

【参考方案1】:

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

element = null;

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

但是

如果一个被移除的 DOM 元素是无引用的 (没有指向它的引用)然后是的 元素本身被垃圾收集器以及任何事件拾取 与之关联的处理程序/侦听器。

如果有仍然指向该元素的引用, 元素及其事件监听器保留在内存中。

var removeChilds = function (node) 

    var last;
    while (last = node.lastChild) node.removeChild(last);
;

removeChilds( element ) ;
element=null;

【讨论】:

以上是关于Javascript:从内存中删除一个 element.cloneNode() [重复]的主要内容,如果未能解决你的问题,请参考以下文章

javascript数组去重

使用javascript回显4随机数组元素[重复]

delete[] p->elems和free(p->elems)有什么区别?

JavaScript:触发事件恢复 innerHtml 属性

javascript random_elem_code

C++ 整数集合运算