Javascript:document.createElement(”)&delete DOMElement

如果在函数中创建元素,如:

function makeDomElement()
{
   var createdElement = document.createElement('textarea');
}

并且你不会在DOM中的任何地方附加它,即通过.appendChild函数,它是否仍然保留在内存中?所以你必须这样做

function makeDomElement()
{
   var createdElement = document.createElement('textarea');
   delete createdElement;
}

我只是好奇 :)

解决方法:

它会因浏览器而异,但javascript delete关键字与DOM的createElement方法无关.没有必要使用删除.

会发生什么是对createdElement中当前持有的元素的引用将被垃圾收集.现在在IE的情况下,这将意味着该元素将其引用计数降为0,因此它将自行销毁并释放其内存.其他浏览器以不同的方式执行操作,通常DOM中的元素本身是垃圾收集对象,并且将在相同(或可能是特定于DOM)的GC循环期间被删除.

如果元素已添加到文档中,那么在IE的情况下会有另一个引用添加到元素中,因此当删除createdElement中的引用时,元素对象仍将具有非零引用计数并继续存在.

对于其他浏览器,其中元素本身是垃圾收集的,因为收集器将在连接到文档的对象的图中看到它,所以不会收集该元素.

上一篇:18-React.createElement.html


下一篇:怎样创建一个元素节点