JavaScript содержит глобальный объект, который является средой его исполняющей
системы, а также следующие встроенные объекты:
В этой главе приведены описания глобального объекта
и примитивных встроенных объектов Object, Function,
Boolean и Number.
Описания остальных встроенных объектов расположены в следующих главах.
Глобальный объект (Global) создается исполняющей системой JavaScript
перед началом исполнения сценария. Это единственный объект, который не имеет имени, и потому
доступ к его свойствам и методам осуществляется без имени объекта. По этой причине их иногда
называют свойствами и методами верхнего уровня.
Свойства глобального объекта
| Свойство |
Описание |
| Infinity |
Специальное значение "бесконечность". |
| NaN |
Специальное значение "не число". |
| undefined |
Неопределенное значение. |
Методы глобального объекта
| Метод |
Описание |
| Boolean |
Преобразует объект в логическое значение. |
| decodeURI |
Декодирует URI. |
| decodeURIComponent |
Декодирует компонент URI. |
| encodeURI |
Кодирует URI. |
| encodeURIComponent |
Кодирует компонент URI. |
| escape |
Преобразует строку в шестнадцатеричную кодировку Unicode. |
| eval |
Исполняет строку кода JavaScript. |
| isFinite |
Возвращает true, если аргумент является конечным числом. |
| isNaN |
Возвращает true, если аргумент равен NaN. |
| Number |
Преобразует объект в число. |
| Object |
Преобразует значение в объект. |
| parseFloat |
Преобразует строку в плавающее число. |
| parseInt |
Преобразует строку в целое число. |
| String |
Преобразует объект в строку. |
| unescape |
Преобразует шестнадцатеричную кодировку Unicode в строку. |
Синтаксис: Infinity
Атрибуты: { DontEnum, DontDelete }
Начальным значением свойства Infinity является значение Number.POSITIVE_INFINITY.
Это значение обозначает положительную бесконечность и больше любого числа, включая его само.
В частности, результат умножения любого числа на Infinity равен Infinity,
а результат деления любого числа на Infinity равен 0. Равенство результата
арифметической операции этому значению указывает на переполнение.
Синтаксис: NaN
Атрибуты: { DontEnum, DontDelete }
Начальным значением свойства NaN является значение Number.NaN
(Not a Number, "не число"). Это значение не совпадает ни с одним числом, включая себя,
поэтому мы не можем проверить правильность числа, сравнивая его с NaN. Вместо
этого нужно использовать методы isFinite и isNaN.
Некоторые методы JavaScript возвращают NaN, если их аргумент не является числом.
Рекомендуется использовать это свойство в своих функциях точно так же.
Синтаксис: undefined
Атрибуты: { DontEnum, DontDelete }
Начальным значением свойства undefined является значение undefined
(неопределенное значение). Оно означает, что переменной не было присвоено никакого значения.
Синтаксис: Boolean(объект)
Аргументы: объект любое выражение
Результат: логическое значение
Метод Boolean преобразует аргумент в логическое значение по правилам, приведенным
в п. 3.2.1.
Синтаксис: decodeURI(строка)
Аргументы: строка строковое выражение, содержащее кодированный URI
Результат: новый строковый объект
Метод decodeURI выполняетстандартную декодировку
URI, закодированного методом encodeURI.
Синтаксис: decodeURIComponent(строка)
Аргументы: строка строковое выражение, содержащее кодированный компонент URI
Результат: новый строковый объект
Метод decodeURIComponent выполняет стандартную
декодировку отдельного компонента URI, закодированного методом encodeURIComponent.
Синтаксис: encodeURI(строка)
Аргументы: строка строковое выражение, содержащее URI
Результат: новый строковый объект
Метод encodeURI выполняет стандартную кодировку
URI. При этом он не кодирует символы ":", "/", ";" и "?",
считая их стандартными разделителями URI. Для кодировки этих символов следует пользоваться методом
encodeURIComponent.
Например, оператор document.write(encodeURI("http://www.test.com?val=привет"))
выведет на экран обозревателя строку http://www.test.com?val=%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82.
Обратная декодировка URI производится методом decodeURI.
Синтаксис: encodeURIComponent(строка)
Аргументы: строка строковое выражение, содержащее компонент URI
Результат: новый строковый объект
Метод encodeURIComponent выполняет стандартную
кодировку отдельного компонента URI. При этом кодируются все символы, не принадлежащие к
базовой латинице.
Этим методом не следует пользоваться для кодировки полного URI. Например, оператор document.write(encodeURIComponent("http://www.test.com?val=привет"))
выведет на экран обозревателя строку
http%3A%2F%2Fwww.test.com%3Fval%3D%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82.
Обратная декодировка компонента URI производится методом decodeURIComponent.
Синтаксис: escape(строка)
Аргументы: строка любое строковое выражение
Результат: новый строковый объект
Метод escape преобразует входную строку в шестнадцатеричную кодировку Unicode.
При этом все символы, не являющиеся символами базовой латиницы, заменяются на их шестнадцатеричные
escape-коды %xx. Если код символа больше 255, то он заменяется на
%uxxxx. Например, оператор document.write(escape("Строка."))
выведет на экран обозревателя строку %u0421%u0442%u0440%u043E%u043A%u0430.
Примечания.
- Эта функция не должна использоваться для стандартной кодировки строк, содержащих
URI. Вместо нее следует использовать методы encodeURI
и encodeURIComponent.
- Обратное преобразование строки производится методом unescape.
Синтаксис: eval(строка)
Аргументы: строка строковое выражение, содержащее программный код
Результат: см. описание
Метод eval рассматривает входную строку как программный код JavaScirpt и исполняет
его. Он позволяет динамически формировать операторы и выражения JavaScript для последующего
выполнения.
Если аргументом метода eval является выражение, то он возвращает значение
этого выражения, например:
var x = 10, y = 20;
var z = eval("x + y + 1"); // z равно 31
Если аргументом метода eval являются операторы, то он выполняет эти операторы
и возвращает значение undefined, например:
var z = eval("var myDate = new Date();"); // создается новая переменная myDate
Метод eval исполняется в том же контексте (глобальном
или локальном), в котором он вызван; этим же контекстом определяется область действия создаваемых
их переменных. Операция this также возвращает указатель
на тот объект, который был текущим в момент вызова данного метода.
Синтаксис: isFinite(число)
Аргументы: число любое числовое выражение
Результат: логическое значение
Метод isFinite возвращает true, если значением его аргумента
является число, отличное от NaN, положительной бесконечности
и отрицательной бесконечности. В противном случае он возвращает false.
Синтаксис: isNaN(выражение)
Аргументы: выражение любое выражение
Результат: логическое значение
Метод isNaN возвращает true, если значением его аргумента
является NaN. В противном случае он возвращает false.
Альтернативным способом проверки значения переменной на равенство NaN является
сравнение ее с самой собой, поскольку NaN это единственное значение,
которое не равно самому себе.
Синтаксис: Number(объект)
Аргументы: объект любое выражение
Результат: числовое значение
Метод Number преобразует аргумент в числовое значение по правилам, приведенным
в п. 3.2.2.
Синтаксис: Object(значение)
Аргументы: значение любое выражение
Результат: объектное значение
Метод Object преобразует аргумент в объектное значение по правилам, приведенным
в п. 3.2.4.
Синтаксис: parseFloat(строка)
Аргументы: строка любое строковое выражение
Результат: числовое значение
Метод parseFloat преобразует входную строку в плавающее число. Если аргумент
не может быть преобразован в плавающее число, то возвращается значение NaN.
Примеры:
parseFloat("314e-2") // возвращает 3.14
parseFloat("3.14abc") // возвращает 3.14
parseFloat("abc") // возвращает NaN
Синтаксис: parseInt(строка [,основание]?)
Аргументы: строка любое строковое выражение
основание - любое числовое выражение
Результат: числовое значение
Метод parseInt преобразует входную строку в целое число. Необязательный аргумент
основание задает основание системы счисления и должен иметь значение, больше или равное
2.
Если основание задано, то parseInt преобразует входную строку в число
с данным основанием. При этом в системах счисления с основанием, большим 10, цифры, большие
девяти, задаются латинскими буквами (A = 10, B = 11,
, Z = 35). Формат чисел для оснований,
больших 36, не определен.
Если основание не задано, то parseInt преобразует входную строку в число
по следующим правилам:
- если строка начинается с 0x, то число считается шестнадцатеричным;
- если строка начинается с 0, то число считается восьмеричным;
- в остальных случаях число считается десятичным.
Если аргумент не может быть преобразован в целое число, то возвращается значение NaN.
Примеры:
parseInt("0xF"); // возвращает 15
parseInt("017"); // возвращает 15
parseInt("08"); // возвращает 0
parseInt("15.99", 10); // возвращает 15
parseInt("FXX", 16); // возвращает 15
parseInt("1111", 2); // возвращает 15
parseInt("15*3"); // возвращает 15
parseInt("Hello", 8); // возвращает NaN
Синтаксис: String(объект)
Аргументы: объект любое выражение
Результат: строковое значение
Метод String преобразует аргумент в строковое значение по правилам, приведенным
в п. 3.3.2.3. Если аргументом является объект, то этот метод
возвращает то же значение, что и метод toString данного
объекта.
Синтаксис: unescape(строка)
Аргументы: строка любое строковое выражение
Результат: новый строковый объект
Метод unescape преобразует строку в шестнадцатеричной кодировке Unicode в
текстовую. Формат исходной строки описан в методе escape.
Эта функция используется, в частности, для стандартной декодировки строк, содержащих URI.
Например, оператор document.write(unescape("%u0421%u0442%u0440%u043E%u043A%u0430."))
выведет на экран обозревателя текст Строка.
Объект Object это примитивный объектный тип, производными которого
являются все остальные объекты языка JavaScript. Он имеет две формы конструктора:
new Object()
new Object(значение)
Здесь значение любое выражение, задающее примитивное значение объекта.
Если оно не указано, то создается пустой объект. Для создания пустого объекта можно также использовать
инициализатор объекта:
{}
Примеры:
var a = new Object(); // пустой объект
var b = {}; // то же самое
var c = new Object(true); // примитивное значение объекта true
Объект Object содержится во всех объектах JavaScript, поэтому все его методы
и свойства им доступны. Методы данного объекта могут быть переопределены в пользовательских
объектах.
Свойства объекта Object
| Свойство |
Описание |
Член прототипа |
| constructor |
Конструктор, который создал объект. |
Да |
| prototype |
Ссылка на прототип класса объектов. |
Да |
Методы объекта Object
| Метод |
Описание |
Член прототипа |
| hasOwnProperty |
Проверяет наличие заданного свойства. |
Да |
| isPrototypeOf |
Проверяет, является ли объект прототипом данного объекта. |
Да |
| propertyIsEnumerable |
Проверяет наличие заданного итерируемого свойства. |
Да |
| toLocaleString |
Преобразует объект в строку с учетом формата операционной системы. |
Да |
| toString |
Преобразует объект в строку. |
Да |
| valueOf |
Возвращает примитивное значение объекта. |
Да |
Синтаксис: объект.constructor
Атрибуты: { DontEnum, DontDelete, ReadOnly }
Значением свойства constructor является функция, которая была конструктором
данного объекта. Подчеркнем, что это не текстовая строка, содержащая имя функции, а
именно функция (точнее, ссылка на нее). Примеры:
function Tobacco(name) {
this.name=name
}
theTobacco = new Tobacco("Camel")
if (theTobacco.constructor == Tobacco) ( ... }
document.write("theTobacco.constructor: " + theTobacco.constructor)
Последний оператор примера выведет на экран обозревателя текст:
theTobacco.constructor: function Tobacco(name) { this.name=name }
Синтаксис: объект.prototype
Атрибуты: { DontEnum, DontDelete, ReadOnly }
Значением свойства prototype является ссылка на прототип данного объекта.
Прототип используется для динамического добавления или удаления свойств и методов класса объектов.
Подробности и примеры см. в п. 7.1.5.
Прототипы встроенных объектов имеют атрибут ReadOnly.
В данном случае это означает, что изменять его набор свойств можно, но заменить прототип встроенного
объекта нельзя. С другой стороны, прототипы пользовательских объектов допускают присваивание;
тем самым мы задаем, какой объект является прототипом данного.
Синтаксис: объект.hasOwnProperty(имя)
Аргумент: имя любое строковое выражение
Результат: логическое значение
Метод hasOwnProperty возвращает true, если объект
имеет свойство с данным именем, и false в противном случае. Этот метод
не проверяет наличие свойства по цепочке прототипов; указанным свойством должен обладать именно
сам объект. Пример:
var a = new Array();
var b1 = a.hasOwnProperty("join"); // false
var b2 = Array.prototype.hasOwnProperty("join"); // true
Синтаксис: объект.isPrototypeOf(имя)
Аргумент: имя любое объектное выражение
Результат: логическое значение
Метод isPrototypeOf возвращает true, если имя является
объектом и объект содержится в цепочке его прототипов, и false в противном
случае. Пример:
var a = new Array();
var b = Array.prototype.isPrototypeOf(a); // true
Синтаксис: объект.propertyIsEnumerable(имя)
Аргумент: имя любое строковое выражение
Результат: логическое значение
Метод propertyIsEnumerable возвращает true, если объект
имеет свойство с данным именем и это свойство не имеет атрибута DontEnum,
и false в противном случае. Этот метод не проверяет наличие свойства по цепочке
прототипов; указанным свойством должен обладать именно сам объект.
Синтаксис: объект.toLocaleString()
Результат: строковое значение
Метод toLocaleString преобразует объект в строковое значение, учитывая
формат операционной системы. Результат зависит от объекта. По умолчанию возвращает строку "[object
имя_объекта]", где имя_объекта это имя данного класса
объектов, т. е. совпадает с методом toString.
Синтаксис: объект.toString()
Результат: строковое значение
Метод toString преобразует объект в строковое значение. Результат
зависит от объекта. По умолчанию возвращает строку "[object имя_объекта]",
где имя_объекта это имя данного класса объектов.
Этот метод автоматически вызывается исполняющей системой JavaScript всякий раз, когда требуется
неявное преобразование объекта в строку.
Синтаксис: объект.valueOf()
Результат: зависит от объекта
Метод valueOf возвращает примитивное значение объекта. Результат
зависит от объекта. По умолчанию возвращает строку "[object имя_объекта]",
где имя_объекта это имя данного класса объектов.
Обычно этот метод вызывается исполняющей системой JavaScript неявно при выполнении автоматического
преобразования типов.