BOM
Это неофициальный термин, так как нет ни одного стандарта W3C или WHATWG, в котором он упоминается.
Одним из простых определений было бы то, что спецификация охватывает всю структуру объекта, доступную через скрипты в браузере, начиная с объекта window
, который «содержит все остальное», поскольку это глобальный объект.
Объект window
содержит множество свойств (попробуйте console.dir( window );
). Эти свойства указаны в многочисленных веб-стандартах. «Базовая» спецификация объекта window
по-прежнему указана в стандарте HTML - см. Здесь , но я полагаю, что только редакторы решат перенести эту спецификацию в отдельный стандарт. Я определенно поддерживаю стандарт BOM или Browser Environment, чтобы сделать вещи более логичными и уместными.
DOM
С другой стороны, это формальный термин. Вы можете найти определения этого термина в различных стандартах, например, DOM4 Стандартные состояния:
DOM - это независимый от языка и платформы интерфейс, который позволяет
программы и скрипты для динамического доступа и обновления содержимого и
структура документов.
Обратите внимание, как упор делается на документы. В отличие от спецификации, которая в основном и является общим термином для всех API в браузерах, DOM - это только те API, которые имеют дело с документами.
Простым определением будет то, что DOM реализован как объект document
(который является корнем дерева DOM между прочим). По сути, дерево DOM (и все внутри него) можно считать частью DOM. Аналогично, все, что находится вне дерева DOM, не является частью DOM.
за пределами DOM-дерева == все свойства window
, кроме document
объекта