# Окружение: DOM, BOM и JS
Сам по себе язык JavaScript не предусматривает работы с браузером.
Он вообще не знает про HTML. Но позволяет легко расширять себя новыми функциями и объектами.
[cut]
На рисунке ниже схематически отображена структура, которая получается если посмотреть на совокупность браузерных объектов с "высоты птичьего полёта".
Как видно из рисунка, на вершине стоит `window`.
У этого объекта двоякая позиция -- он с одной стороны является глобальным объектом в JavaScript, с другой -- содержит свойства и методы для управления окном браузера, открытия новых окон, например:
```js
//+ run
// открыть новое окно/вкладку с URL http://ya.ru
window.open('http://ya.ru');
```
## Объектная модель документа (DOM)
Глобальный объект `document` даёт возможность взаимодействовать с содержимым страницы.
Пример использования:
```js
//+ run
document.body.style.background = 'red';
alert( 'Элемент BODY стал красным, а сейчас обратно вернётся' );
document.body.style.background = '';
```
Он и громадное количество его свойств и методов описаны в [стандарте W3C DOM](http://www.w3.org/DOM/DOMTR).
По историческим причинам когда-то появилась первая версия стандарта DOM Level 1, затем придумали ещё свойства и методы, и появился DOM Level 2, на текущий момент поверх них добавили ещё DOM Level 3 и готовится DOM 4.
Современные браузеры также поддерживают некоторые возможности, которые не вошли в стандарты, но де-факто существуют давным-давно и отказываться от них никто не хочет. Их условно называют "DOM Level 0".
Также информацию по работе с элементами страницы можно найти в стандарте [HTML 5](http://www.w3.org/TR/html5/Overview.html).
Мы подробно ознакомимся с DOM далее в этой части учебника.
## Объектная модель браузера (BOM)
BOM -- это объекты для работы с чем угодно, кроме документа.
Например: