JavaScript. Подробное руководство, 6-е издание, стр. 24
3.5. Глобальный объект
В разделах выше описывались простые типы данных и значения языка JavaScript. Объектные типы - объекты, массивы и функции - описываются в отдельных главах, далее в книге. Но существует один важный объект, с которым необходимо познакомиться сейчас. Глобальный объект - это обычный объект JavaScript, который играет очень важную роль: свойства этого объекта являются глобальными идентификаторами, доступными из любого места в программах на JavaScript. Когда выполняется запуск интерпретатора JavaScript (или когда вебброузер загружает новую страницу), создается новый глобальный объект, в котором инициализируется начальный набор свойств, определяющих:
• глобальные свойства, такие как
<b>undefined</b><b>Infinity</b><b>NaN</b>• глобальные функции, такие как
<b>isNaN(), parseInt()</b><b>eval()</b>• функции-конструкторы, такие как
<b>Date(), RegExp(), String(), Object()</b><b>Array()</b>• глобальные объекты, такие как
<b>Math</b><b>JS0N</b>Имена первоначально устанавливаемых свойств глобального объекта не являются зарезервированными словами, но вы вполне можете считать их таковыми. Все эти свойства перечислены в разделе 2.4.1. Некоторые из глобальных свойств уже описывались в этой главе. Большинство других будут рассматриваться в разных разделах книги. Кроме того, их все можно отыскать по именам в справочном разделе по базовому JavaScript или в описании самого глобального объекта, под именем «
<b>Global</b><b>Window</b>В программном коде верхнего уровня, т. е. в JavaScript-коде, который не является частью функции, сослаться на глобальный объект можно посредством ключевого слова
<b>this</b><b>var global = this; // Определить глобальную переменную для ссылки на глобальный объект</b>В клиентском JavaScript роль глобального объекта для всего JavaScript-кода, содержащегося в соответствующем ему окне броузера, играет объект
<b>Window</b><b>window</b><b>this</b><b>Window</b>При создании в глобальном объекте определяются все предопределенные глобальные значения JavaScript. Однако этот специальный объект может также хранить глобальные переменные программы. Если программа объявляет глобальную переменную, она становится свойством глобального объекта. Подробнее этот механизм описывается в разделе 3.10.2.
3.6. Объекты-обертки
Объекты в языке JavaScript являются составными значениями: они представляют собой коллекции свойств, или именованных значений. Обращение к свойствам мы будем выполнять с использованием точечной нотации. Свойства, значениями которых являются функции, мы будем называть методами. Чтобы вызвать метод
<b>m</b><b>о.m().</b>Мы уже видели, что строки обладают свойствами и методами:
<b>var s = "hello world!"; // Строка</b><b>var word = s.substring.indexOf(" ")+1, s.length); // Использование свойств строки</b>Однако строки не являются объектами, так почему же они обладают свойствами? Всякий раз когда в программе предпринимается попытка обратиться к свойству строки s, интерпретатор JavaScript преобразует строковое значение в объект, как если бы был выполнен вызов
<b>new String(s)</b>Наличие методов у числовых и логических значений объясняется теми же причинами: при обращении к какому-либо методу создается временный объект вызовом конструктора
<b>Number()</b><b>Boolean()</b><b>null</b><b>undefined</b>Рассмотрим следующий фрагмент и подумаем, что происходит при его выполнении:
<b>var s = "test"; // Начальное строковое значение.</b><b>s.len = 4; // Установить его свойство.</b><b>var t = s.len; // Теперь запросить значение свойства.</b>В начале этого фрагмента переменная
<b>t</b><b>undefined</b><b>String</b><b>lеn</b><b>String</b><b>len</b><b>undefined</b>Временные объекты, которые создаются при обращении к свойству строки, числа или логического значения, называются объектами-обертками, и иногда может потребоваться отличать строки от объектов
<b>String</b><b>Number</b><b>Boolean</b>