Мы видели, что объект Window – это ключевой объект в клиентском JavaScript. Через него доступны все остальные объекты. Например, любой объект Window со_ держит свойство document, ссылающееся на связанный с окном объект Document, и свойство location, ссылающееся на связанный с окном объект Location. Объект Window также содержит массив frames[], ссылающийся на объекты Window, пред_
254 Глава 13. JavaScript в веб*броузерах
ставляющие фреймы исходного окна. То есть document представляет объект Docu_ ment текущего окна, а frames[1].document ссылается на объект Document второго до_ чернего фрейма текущего окна.
Объект Document (и другие объекты клиентского JavaScript) имеют также свойст_ ва, которые позволяют ссылаться на другие объекты. Например, в каждом объ_ екте Document имеется массив forms[], содержащий объекты Form, которые пред_ ставляют любые присутствующие в документе HTML_формы. Для ссылки на од_ ну из этих форм можно использовать выражение:
window.document.forms[0]
Продолжим тот же пример: в каждом объекте Form имеется массив elements[], со_ держащий объекты, которые представляют различные элементы HTML_форм (поля ввода, кнопки и т. д.), присутствующие внутри формы. В некоторых слу_ чаях программисту приходится писать код, ссылающийся на объект в конце всей цепочки объектов, получая, например, такие сложные выражения:
Как мы видели ранее, объект Window – это глобальный объект в начале цепочки областей видимости, и все клиентские объекты в JavaScript доступны как свой_ ства других объектов. Это значит, что имеется иерархия JavaScript_объектов, в корне которой находится объект Window. Эта иерархия показана на рис. 13.1.
Обратите внимание: на рис. 13.1 показаны только свойства объектов, ссылаю_ щиеся на другие объекты. Большинство объектов, изображенных на диаграмме, имеют немало свойств, которые здесь не показаны.
Рис. 13.1. Иерархия объектов клиентского JavaScript и нулевой уровень модели DOM
13.1. Среда веб*броузера
Многие объекты, изображенные на этом рисунке, происходят от объекта Docu_ ment. Это поддерево большой иерархии объектов на стороне клиента известно как объектная модель документа (Document Object Model, DOM) и интересно тем, что на нем сконцентрировались усилия по стандартизации. На рисунке показаны объекты документа, которые стали стандартом «де_факто», т. к. согласованно реализованы во всех основных броузерах. Все вместе они известны как нулевой уровень модели DOM (DOM Level 0), поскольку образуют базовый уровень функ_ циональности документа, на которую JavaScript_программисты могут опирать_ ся во всех броузерах. Эти основные объекты документа рассмотрены в главе 15, где также описывается усложненная объектная модель документа, стандартизо_ ванная W3C. HTML_формы являются частью DOM, но это настолько специали_ зированная тема, что ее обсуждение выделено в отдельную главу 18.