为什么DOMParser需要实例化?

5

创建DOM元素的首选本地方法之一是使用新的DOMParser类,类似于jQuery从字符串创建DOM元素。此示例摘自MDN

var parser = new DOMParser();
var doc = parser.parseFromString(aStr, "text/xml");

我想知道在解析字符串之前需要实例化解析器的特殊原因。也就是说,为什么我们不能像这样做:parseFromString(aStr, "text/xml");?解析器对象看起来是多余的。DOMParser构造函数甚至没有任何参数,它的实例除了parseFromString方法之外没有其他方法

1
未来的保障,也许? - Sergio Tulentsev
1
我不确定,但我认为在实例化DOMParser之前它只是一个函数,并且占用较少的内存(或其他资源)。因此,如果您从未需要它,则不会实例化它以避免不必要的开销。 - guramidev
1
@guramidev,我同意。我相信这很可能是造成这种情况的主要原因,但我很惊讶它需要那么多资源,以至于你甚至不想在调用parseFromString函数时自动分配它们。 - Quentin Roy
1
好的,你可以一直使用 function parseFromString(str, t) { return (new DOMParser).parseFromString(str, t); } - melpomene
2
@melpomene,好的。但我的问题是为什么这不是本地的? - Quentin Roy
1个回答

2

如果我没记错的话,准备解析文本的DOM解析器是一项昂贵的操作(在内存方面),因此为了节省每次访问页面/选项卡时设置DOM解析器所产生的内存开销,浏览器将清除从其实例化的初始DOM解析器中获取的内存(以解析文档源代码),并且除非您再次实例化它,否则该内存被清除。

如果您想,可以使用您喜欢的浏览器中的分析工具来查看在实例化DOM解析器之前和之后内存的变化。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接