JavaScript. Подробное руководство, 6-е издание, стр. 438

Аргументы

прототип Прототип создаваемого объекта или null.

дескрипторы Необязательный объект, отображающий имена свойств в их дескрипторы.

Возвращаемое значение

Вновь созданный объект, наследующий прототип и обладающий свойствами, описываемыми дескрипторами.

Исключения

<b>ТуреЕrror</b>
Генерируется, если прототип не является объектом или значением null или если указанные дескрипторы заставляют метод
<b>Object.definePгорегties()</b>
сгенерировать исключение
<b>ТуреЕrror</b>
.

Описание

Функция

<b>Object.create()</b>
создает и возвращает новый объект с прототипом, определяемым аргументом прототип. Это означает, что новый объект наследует свойства от прототипа.

Если указан необязательный аргумент дескрипторы, функция

<b>Object.create()</b>
добавит в новый объект свойства, как если бы был вызван метод
<b>Object.defineProperties().</b>
То есть вызов функции
<b>Object.create(p,d)</b>
с двумя аргументами эквивалентен вызовам:

<b>Object.defіneProperties(Object.create(p), d);</b>

Дополнительную информацию об аргументе дескрипторы можно найти в справочной статье Object.defineProperties(), а описание дескрипторов свойств в справочной статье Object.getOwnPropertyDescriptor().

Обратите внимание, что эта функция вызывается не как метод объекта: это глобальная функция, которая принимает объект в виде аргумента.

Пример

<b>// Создать объект, который имеет собственные свойства х и у и наследует свойство z </b>

<b>var р = Object.create({z:0}, {</b>

<b>  x: { value: 1, writable: false, enumerable:true, configurable: true},</b>

<b>  y: { value: 2, writable: false, enumerable:true, configurable: true},</b>

<b>});</b>

См. также

Object.defineProperty(), Object.defineProperties(), Object.getOwnPropertyDescriptor(), разделы 6.1, 6.7

Object.defineProperties() (ECMAScript5)

создает или настраивает свойства объекта

Синтаксис

<b>Object.defineProperties(o, дескрипторы)</b>

Arguments

о Объект, в котором будут создаваться или настраиваться свойства.

дескрипторы Объект, отображающий имена свойств в их дескрипторы.

Возвращаемое значение

Объект о.

Исключения

<b>ТуреЕrror</b>
Генерируется, если аргумент о не является объектом или если какое-либо из указанных свойств не может быть создано или настроено. Эта функция не является атомарной: она может создать или настроить часть свойств и затем возбудить исключение, не создав или не настроив другие свойства. Перечень ошибок, которые могут вызвать исключение
<b>ТуреЕrror</b>
, приводится в разделе 6.7.

Описание

Функция

<b>Object.defineProperties()</b>
создает или настраивает свойства объекта о, указанные и описанные в аргументе дескрипторы. Имена свойств объекта дескрипторы являются именами свойств, которые будут созданы или настроены в объекте о, а значениями этих свойств являются объекты дескрипторов свойств, которые определяют атрибуты создаваемых или настраиваемых свойств.

Функция

<b>Object.defineProperties()</b>
действует подобно функции
<b>Object.defineProperty();</b>
дополнительные подробности смотрите в описании этой функции. Дополнительные сведения об объектах дескрипторов свойств приводятся в справочной статье
<b>Object. getOwnPropertyDescriptor().</b>

Пример

<b>// Добавить в новый объект свойства х и у, доступные только для чтения</b>

<b>var р = Object.defineProperties({}, {</b>

<b>  х: { value: 0, writable: false, enumerable:true, configurable: true},</b>

<b>  y: { value: 1, writable: false, enumerable:true, configurable: true},</b>

<b>});</b>

См. также

Object.create(), Object.defineProperty(), Object.getOwnPropertyDescriptor(), раздел 6.7

Object.defineProperty() (ECMAScript 5)

создает или настраивает одно свойство в объекте

Синтаксис

<b>Object.defineProperty(o, имя, дескриптор)</b>

Аргументы

о

Объект, в котором будет создаваться или настраиваться свойство.

имя Имя создаваемого или настраиваемого свойства.

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

Возвращаемое значение

Объект о.

Исключения

<b>ТуреЕrror</b>
Генерируется, если аргумент о не является объектом или если свойство не может быть создано (из-за того, что объект о является нерасширяемым) или настроено (например, из-за того, что уже существующее свойство является ненастраиваемым). Перечень ошибок, которые могут вызвать исключение
<b>ТуреЕrror</b>
, приводится в разделе 6.7.

Описание

Функция

<b>Object.defineProperty()</b>
создает или настраивает свойство с именем имя в объекте о, используя описание свойства в аргументе дескриптор. Дополнительные сведения об объектах дескрипторов свойств приводятся в справочной статье Object.getOwnPropertyDescriptor().

Если объект о еще не имеет свойства с именем имя, эта функция просто создаст новое свойство с атрибутами и значением, указанными в дескрипторе. Если в дескрипторе не указаны какие-либо атрибуты, соответствующие им атрибуты получат значение false или undefined.

Если значение аргумента имя совпадает с именем существующего свойства объекта о, то функция

<b>Object.defineProperty()</b>
настроит это свойство, изменив его значение или атрибуты. В этом случае в дескрипторе достаточно указать только атрибуты, которые должны быть изменены: атрибуты, отсутствующие в дескрипторе, сохранят свои прежние значения.