Объекты – это составной тип данных, они объединяют множество значений в еди_ ный модуль и позволяют сохранять и извлекать значения по их именам. Говоря другими словами, объекты – это неупорядоченные коллекции свойств, каждое из которых имеет свои имя и значение. Именованные значения, хранящиеся в объекте, могут быть данными элементарных типов, такими как числа или строки, или сами могут быть объектами.
Самый простой способ создания объектов заключается во включении в програм_ му литерала объекта. Литерал объекта – это заключенный в фигурные скобки список свойств (пар «имя–значение»), разделенных запятыми. Имя каждого свойства может быть JavaScript_идентификатором или строкой, а значением любого свойства может быть константа или JavaScript_выражение. Несколько примеров создания объектов:
var empty = {}; // Объект без свойств var point = { x:0, y:0 };
var circle = { x:point.x, y:point.y+1, radius:2 }; var homer = {
"name": "Homer Simpson", "age": 34,
"married": true,
"occupation": "plant operator",
7.2. Свойства объектов
'email': "homer@example.com"
};
Литерал объекта – это выражение, которое создает и инициализирует новый объект всякий раз, когда производится вычисление этого выражения. Таким об_ разом, с помощью единственного литерала объекта можно создать множество новых объектов, если этот литерал поместить в тело цикла или функции, кото_ рая будет вызываться многократно.
С помощью оператора new можно создать другую разновидность объектов. За этим оператором должно быть указано имя функции_конструктора, выполняю_ щей инициализацию свойств объекта. Например:
var a = new Array( );
//
Создать
пустой массив
var
d
=
new
Date( );
//
Создать
объект с
текущими временем и датой
var
r
=
new
RegExp("javascript",
"i"); //
Создать объект регулярного выражения
Продемонстрированные здесь функции Array(), Date() и RegExp() являются встро_ енными конструкторами базового языка JavaScript. (Конструктор Array() опи_ сан далее в этой главе, описание других конструкторов можно найти в третьей части книги.) Конструктор Object() создает пустой объект, как если бы исполь_ зовался литерал {}.
Существует возможность определять собственные конструкторы для инициали_ зации вновь создаваемых объектов необходимым вам способом. Как это делает_ ся, показано в главе 9.