2016-12-15 2 views
0

Я существую, когда мне нужно клонировать элемент, читать его атрибуты и другие функции синтаксического анализа, но теперь, поскольку я не делаю element.parentNode.appendChild(clonedElement), как удалить этот клон из Память?Javascript: удалить element.cloneNode() из памяти

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; 
Смежные вопросы