Почему вы можете использовать новое изображение, но не новое Div или новый Span?

В примерах я видел new Image() для создания нового элемента изображения HTML, но когда я пытаюсь new Div(), поддержка отсутствует. Есть ли причина для этого или любого плана в будущем, чтобы добавить его?

Пример:

var image = new Image();
var div = new Div(); // error

Ответ 1

Класс Div не существует. Любой элемент DOM можно создать с помощью функции Document.createElement():

var div = document.createElement('div');
var img = document.createElement('img');

document.createElement('div') создает новый HTMLDivElement.

new Image() создает на самом деле HTMLImageElement и эквивалентно document.createElement('img').

Изображения могут быть созданы с использованием синтаксиса new Image() по историческим причинам. Еще в 90-х годах объект Image был одним из первых динамических HTML-функций, реализованных всеми браузерами до того, как был даже изобретен текущий DOM ( не говоря уже о том же, что и все браузеры).

Ответ 2

Хороший вопрос, почему этот метод существует. Уровень жизни HTML не отвечает на этот вопрос (https://html.spec.whatwg.org/multipage/embedded-content.html#dom-image). Он просто утверждает, что существует конструктор для HTMLImageElements, предоставляемый в дополнение к методу factory document.createElement('img')

С помощью этой функции вы можете создать все элементы DOM, например. document.createElement('div') https://developer.mozilla.org/en-US/docs/Web/API/Document/createElement

Будут ли реализованы эти конструкторы для других элементов, которые я не знаю.