JavaScript:document.createelement('')和删除domelement
-
13-09-2019 - |
题
如果您在函数中创建一个元素,例如:
function makeDomElement()
{
var createdElement = document.createElement('textarea');
}
而且您不会通过.appendchild函数在DOM IE中的任何地方附加它,是否仍然保留在内存中?所以你必须做
function makeDomElement()
{
var createdElement = document.createElement('textarea');
delete createdElement;
}
我只是好奇 :)
解决方案
它将从浏览器到浏览器不同,但是JavaScript delete
关键字与DOM无关 createElement
方法。无需使用 delete
.
发生的事情是,对当前持有的元素的引用 createdElement
将收集垃圾。现在,就IE而言,这意味着该元素的参考计数将降至0,因此它将破坏自身并释放其内存。其他浏览器通常以不同的方式进行操作,通常DOM中的元素本身就是收集的垃圾对象,并且将在相同(或可能是DOM特定)GC周期中删除。
如果元素被添加到文档中,则在IE情况下,将在元素中添加另一个参考 createdElement
被删除该元素对象仍将具有非零参考计数并继续存在。
如果其他浏览器本身是垃圾收集的,则不会收集元素,因为收集器会在连接到文档的对象的图中看到它。
其他提示
函数终止之后,不再对对象进行任何引用,即如果垃圾收集器正常工作,则应收集它(如果涉及DOM节点,则有一个IE错误阻止具有循环引用的对象)。
另外,由于无法删除本地变量,因此您的代码被打破了:尝试这样做甚至会在严格的模式ES5中丢弃语法错误。
不隶属于 StackOverflow