JavaScript性能–删除伪DOM项目

问题描述 投票:0回答:1

为了计算路径,我正在像这样在后台创建多个SVG元素:

var path = document.createElementNS('http://www.w3.org/2000/svg', 'path');

问题是,这是在循环中发生的,创建的路径数量无法预料。元素未附加到主体。我的问题是所有这些伪元素都会影响性能/内存吗?还是将它们收集为垃圾?

如果不是从文档中删除元素的最佳技术是什么?

谢谢!

javascript performance dom svg memory
1个回答
1
投票

[垃圾收集器收集了所有无法再访问的变量,因此您的代码在顶层运行,这意味着这些变量将附加到window,因此无法进行垃圾收集,或者您的代码在[ C0],在这种情况下,如果function内部没有任何闭包,则将在function结束时收集它们,并对其进行引用,例如以下示例:

function foo() {
    var path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
    return function() {
        // Do something with path;
    }
}

var bar = foo();

在那种情况下,path的生存期与bar一样长,因为它在内部匿名function上具有引用,而在内部path上具有引用。

© www.soinside.com 2019 - 2024. All rights reserved.