Выбрать главу

• Атрибут writable определяет доступность значения свойства для записи.

• Атрибут enumerable определяет доступность имени свойства для перечисления в цикле for/in.

• Атрибут configurable определяет возможность настройки, т.е. удаления свойства и изменения его атрибутов.

До появления стандарта ECMAScript 5 все свойства в объектах, создаваемые программой, доступны для записи, перечисления и настройки. В ECMAScript 5 предусматривается возможность настройки атрибутов ваших свойств. Как это делается, описывается в разделе 6.7.

В дополнение к свойствам каждый объект имеет три атрибута объекта:

• Атрибут prototype содержит ссылку на другой объект, от которого наследуются свойства.

• Атрибут class содержит строку с именем класса объекта и определяет тип объекта.

• Флаг extensible (в ECMAScript 5) указывает на возможность добавления новых свойств в объект.

Поближе с прототипами и механизмом наследования свойств мы познакомимся в разделах 6.1.3и6.2.2,а более детальное обсуждение всех трех атрибутов объектов вы найдете в разделе 6.8.

Наконец, ниже приводится описание некоторых терминов, которые помогут нам различать три обширные категории объектов в языке JavaScript и два типа свойств:

Объект базового языка - это объект или класс объектов, определяемый спецификацией ECMAScript. Массивы, функции, даты и регулярные выражения (например) являются объектами базового языка.

Объект среды выполнения - это объект, определяемый средой выполнения (такой как веб-броузер), куда встроен интерпретатор JavaScript. Объекты HTMLElement, представляющие структуру веб-страницы в клиентском JavaScript, являются объектами среды выполнения. Объекты среды выполнения могут также быть объектами базового языка, например, когда среда выполнения определяет методы, которые являются обычными объектами Function базового языка JavaScript.

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

Собственное свойство - это свойство, определяемое непосредственно в данном объекте.

Унаследованное свойство - это свойство, определяемое прототипом объекта."

6.1. Создание объектов

Объекты можно создавать с помощью литералов объектов, ключевого слова new и (в ECMAScript 5) функции Object.create(). Все эти приемы описываются в следующих разделах.

6.1.1. Литералы объектов

Самый простой способ создать объект заключается во включении в программу литерала объекта. Литерал объекта - это заключенный в фигурные скобки список свойств (пар имя/значение), разделенных запятыми. Именем свойства может быть идентификатор или строковый литерал (допускается использовать пустую строку). Значением свойства может быть любое выражение, допустимое в JavaScript, - значение выражения (это может быть простое значение или объект) станет значением свойства. Ниже приводится несколько примеров создания объектов:

var empty = {};                         // Объект без свойств

var point = { x:0, y:0 };               // Два свойства

var point2 = { x:point.x, y:point.y+1 };// Более сложные значения

var book = {

"main title": "JavaScript",             // Имена свойств с пробелами

'sub-title': "The Definitive Guide",    // и дефисами, поэтому используются

                                        // строковые литералы

"for": "all audiences",                 // for - зарезервированное слово,

                                        // поэтому в кавычках