【发布时间】:2017-02-20 00:13:27
【问题描述】:
如果你从MDN看DOMParser的例子:
var parser = new DOMParser();
var doc = parser.parseFromString(stringContainingXMLSource, "application/xml");
// returns a Document, but not a SVGDocument nor a HTMLDocument
parser = new DOMParser();
doc = parser.parseFromString(stringContainingXMLSource, "image/svg+xml");
// returns a SVGDocument, which also is a Document.
parser = new DOMParser();
doc = parser.parseFromString(stringContainingHTMLSource, "text/html");
// returns a HTMLDocument, which also is a Document.
他们不断创建new DOMParser 实例。但为什么?一个解析器实例还不够吗?进行大量解析的代码呢,创建新实例有性能优势吗?
编辑:人们对这个例子很感兴趣。为了更好地表达我的问题:
为什么DOMParser 不像JSON 和它的parse 方法?为什么parseFromString 不是静态方法?
【问题讨论】:
-
我会将其解释为 3 个“单独的”示例,而不是鼓励为每个解析操作创建一个新的解析器。
-
也许吧,但通常我看到很多代码都在
(new DOMParser).parseFromString周围。我想这是为了方便,但为什么它甚至有这个接口,你的 DOMParser 实例中是否保存了任何状态?我看了spec一点,但找不到原因。 -
目前 DOMParser 和 XMLSerializer 对象都只有一个方法,但是如果需要,使用构造函数可以在将来添加更多。
-
你有没有试过询问页面的作者?
-
@Kalido,如果它不是一个类,我不明白为什么他们不能在以后添加更多方法。如果它更像
JSON.parse,对我来说是有意义的。我认为这可能是有原因的,但似乎没有。 @guest271314 我更感兴趣的是为什么 DOMParser 有这个接口。
标签: javascript domparser