Если посмотреть на пример DomParser из 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
статический метод?
Я бы это интерпретировал как «отдельные» примеры, а не как поощрение для создания нового анализатора для каждой операции синтаксического анализа. –
Возможно, но, как правило, я вижу много кода, который делает '(новый DOMParser) .parseFromString'. Думаю, это для удобства, но почему у этого даже есть этот интерфейс, какое-либо состояние хранится в вашем экземпляре DOMParser? Я немного посмотрел на [spec] (https://w3c.github.io/DOM-Parsing/#dom-domparser), но не смог найти причину. – kasbah
В настоящее время оба объекта DOMParser и XMLSerializer имеют только один метод, но использование конструктора позволяет при необходимости добавить больше в будущем. – Kaiido