为了计算路径,我正在像这样在后台创建多个SVG元素:
var path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
问题是,这是在循环中发生的,创建的路径数量无法预料。元素未附加到主体。我的问题是所有这些伪元素都会影响性能/内存吗?还是将它们收集为垃圾?
如果不是从文档中删除元素的最佳技术是什么?
谢谢!
[垃圾收集器收集了所有无法再访问的变量,因此您的代码在顶层运行,这意味着这些变量将附加到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
上具有引用。