Реклама и Статистика


SEO sprint - Всё для максимальной раскрутки!



Примитивные встроенные объекты часть 1

Глава 8. Примитивные встроенные объекты

JavaScript содержит глобальный объект, который является средой его исполняющей системы, а также следующие встроенные объекты:

Объект Описание Объект Описание
Array Массивы Math Математические функции и константы
Boolean Логические объекты Number Числовые объекты
Date Дата и время Object Прототип остальных объектов
Error Исключения RegExp Регулярные выражения
Function Функции String Строковые объекты

В этой главе приведены описания глобального объекта и примитивных встроенных объектов Object, Function, Boolean и Number. Описания остальных встроенных объектов расположены в следующих главах.

8.1. Глобальный объект

Глобальный объект (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

Синтаксис: Infinity
Атрибуты:  { DontEnum, DontDelete }

Начальным значением свойства Infinity является значение Number.POSITIVE_INFINITY. Это значение обозначает положительную бесконечность и больше любого числа, включая его само. В частности, результат умножения любого числа на Infinity равен Infinity, а результат деления любого числа на Infinity равен 0. Равенство результата арифметической операции этому значению указывает на переполнение.

Свойство NaN

Синтаксис: NaN
Атрибуты:  { DontEnum, DontDelete }

Начальным значением свойства NaN является значение Number.NaN (Not a Number, "не число"). Это значение не совпадает ни с одним числом, включая себя, поэтому мы не можем проверить правильность числа, сравнивая его с NaN. Вместо этого нужно использовать методы isFinite и isNaN.

Некоторые методы JavaScript возвращают NaN, если их аргумент не является числом. Рекомендуется использовать это свойство в своих функциях точно так же.

Свойство undefined

Синтаксис: undefined
Атрибуты:  { DontEnum, DontDelete }

Начальным значением свойства undefined является значение undefined (неопределенное значение). Оно означает, что переменной не было присвоено никакого значения.

Метод Boolean

Синтаксис: Boolean(объект)
Аргументы: объект — любое выражение
Результат: логическое значение

Метод Boolean преобразует аргумент в логическое значение по правилам, приведенным в п. 3.2.1.

Метод decodeURI

Синтаксис: decodeURI(строка)
Аргументы: строка — строковое выражение, содержащее кодированный URI
Результат: новый строковый объект

Метод decodeURI выполняетстандартную декодировку URI, закодированного методом encodeURI.

Метод decodeURIComponent

Синтаксис: decodeURIComponent(строка)
Аргументы: строка — строковое выражение, содержащее кодированный компонент URI
Результат: новый строковый объект

Метод decodeURIComponent выполняет стандартную декодировку отдельного компонента URI, закодированного методом encodeURIComponent.

Метод encodeURI

Синтаксис: 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

Синтаксис: 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(строка)
Аргументы: строка — любое строковое выражение
Результат: новый строковый объект

Метод escape преобразует входную строку в шестнадцатеричную кодировку Unicode. При этом все символы, не являющиеся символами базовой латиницы, заменяются на их шестнадцатеричные escape-коды %xx. Если код символа больше 255, то он заменяется на %uxxxx. Например, оператор document.write(escape("Строка.")) выведет на экран обозревателя строку %u0421%u0442%u0440%u043E%u043A%u0430.

Примечания.

  1. Эта функция не должна использоваться для стандартной кодировки строк, содержащих URI. Вместо нее следует использовать методы encodeURI и encodeURIComponent.
  2. Обратное преобразование строки производится методом unescape.

Метод eval

Синтаксис: 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(число)
Аргументы: число — любое числовое выражение
Результат: логическое значение

Метод isFinite возвращает true, если значением его аргумента является число, отличное от NaN, положительной бесконечности и отрицательной бесконечности. В противном случае он возвращает false.

Метод isNaN

Синтаксис: isNaN(выражение)
Аргументы: выражение — любое выражение
Результат: логическое значение

Метод isNaN возвращает true, если значением его аргумента является NaN. В противном случае он возвращает false.

Альтернативным способом проверки значения переменной на равенство NaN является сравнение ее с самой собой, поскольку NaN — это единственное значение, которое не равно самому себе.

Метод Number

Синтаксис: Number(объект)
Аргументы: объект — любое выражение
Результат: числовое значение

Метод Number преобразует аргумент в числовое значение по правилам, приведенным в п. 3.2.2.

Метод Object

Синтаксис: Object(значение)
Аргументы: значение — любое выражение
Результат: объектное значение

Метод Object преобразует аргумент в объектное значение по правилам, приведенным в п. 3.2.4.

Метод parseFloat

Синтаксис: parseFloat(строка)
Аргументы: строка — любое строковое выражение
Результат: числовое значение

Метод parseFloat преобразует входную строку в плавающее число. Если аргумент не может быть преобразован в плавающее число, то возвращается значение NaN. Примеры:

parseFloat("314e-2")	// возвращает 3.14
parseFloat("3.14abc")	// возвращает 3.14
parseFloat("abc")	// возвращает NaN

Метод parseInt

Синтаксис: 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(объект)
Аргументы: объект — любое выражение
Результат: строковое значение

Метод String преобразует аргумент в строковое значение по правилам, приведенным в п. 3.3.2.3. Если аргументом является объект, то этот метод возвращает то же значение, что и метод toString данного объекта.

Метод unescape

Синтаксис: unescape(строка)
Аргументы: строка — любое строковое выражение
Результат: новый строковый объект

Метод unescape преобразует строку в шестнадцатеричной кодировке Unicode в текстовую. Формат исходной строки описан в методе escape. Эта функция используется, в частности, для стандартной декодировки строк, содержащих URI. Например, оператор document.write(unescape("%u0421%u0442%u0440%u043E%u043A%u0430.")) выведет на экран обозревателя текст Строка.

8.2. Объекты общего вида: объект Object

Объект 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

Синтаксис: объект.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

Синтаксис: объект.prototype
Атрибуты:  { DontEnum, DontDelete, ReadOnly }

Значением свойства prototype является ссылка на прототип данного объекта. Прототип используется для динамического добавления или удаления свойств и методов класса объектов. Подробности и примеры см. в п. 7.1.5.

Прототипы встроенных объектов имеют атрибут ReadOnly. В данном случае это означает, что изменять его набор свойств можно, но заменить прототип встроенного объекта нельзя. С другой стороны, прототипы пользовательских объектов допускают присваивание; тем самым мы задаем, какой объект является прототипом данного.

Метод hasOwnProperty

Синтаксис: объект.hasOwnProperty(имя)
Аргумент:  имя — любое строковое выражение
Результат: логическое значение

Метод hasOwnProperty возвращает true, если объект имеет свойство с данным именем, и false в противном случае. Этот метод не проверяет наличие свойства по цепочке прототипов; указанным свойством должен обладать именно сам объект. Пример:

var a = new Array();
var b1 = a.hasOwnProperty("join");		 // false
var b2 = Array.prototype.hasOwnProperty("join"); // true

Метод isPrototypeOf

Синтаксис: объект.isPrototypeOf(имя)
Аргумент:  имя — любое объектное выражение
Результат: логическое значение

Метод isPrototypeOf возвращает true, если имя является объектом и объект содержится в цепочке его прототипов, и false в противном случае. Пример:

var a = new Array();
var b = Array.prototype.isPrototypeOf(a); // true

Метод propertyIsEnumerable

Синтаксис: объект.propertyIsEnumerable(имя)
Аргумент:  имя — любое строковое выражение
Результат: логическое значение

Метод propertyIsEnumerable возвращает true, если объект имеет свойство с данным именем и это свойство не имеет атрибута DontEnum, и false в противном случае. Этот метод не проверяет наличие свойства по цепочке прототипов; указанным свойством должен обладать именно сам объект.

Метод toLocaleString

Синтаксис: объект.toLocaleString()
Результат: строковое значение

Метод toLocaleString преобразует объект в строковое значение, учитывая формат операционной системы. Результат зависит от объекта. По умолчанию возвращает строку "[object имя_объекта]", где имя_объекта — это имя данного класса объектов, т. е. совпадает с методом toString.

Метод toString

Синтаксис: объект.toString()
Результат: строковое значение

Метод toString преобразует объект в строковое значение. Результат зависит от объекта. По умолчанию возвращает строку "[object имя_объекта]", где имя_объекта — это имя данного класса объектов.

Этот метод автоматически вызывается исполняющей системой JavaScript всякий раз, когда требуется неявное преобразование объекта в строку.

Метод valueOf

Синтаксис: объект.valueOf()
Результат: зависит от объекта

Метод valueOf возвращает примитивное значение объекта. Результат зависит от объекта. По умолчанию возвращает строку "[object имя_объекта]", где имя_объекта — это имя данного класса объектов.

Обычно этот метод вызывается исполняющей системой JavaScript неявно при выполнении автоматического преобразования типов.


Просмотров: 21902

  Ваш коментарий будет первым

Добавить коментарий
Имя:
Коментарий:



Код:* Code

Реклама