defineProperty()
Поддержка браузерами
9+ | 12+ | 5.1+ |
Описание
Метод Object.defineProperty() добавляет новое свойство объекту или изменяет уже существующее свойство.
Синтаксис
Object.defineProperty(obj, prop, descriptor);
Аргументы
- obj: Объект, для которого требуется добавить новое свойство или изменить уже существующее.
- prop: Строка, содержащая имя свойства.
- descriptor: Объект-дескриптор. Свойства дескриптора соответствуют именам атрибутов:
configurable
,enumerable
,writable
,value
,get
иset
. Свойства дескриптораconfigurable
,enumerable
,writable
в качестве значения принимают только значение булева типа. Свойстваget
иset
в качестве значения принимают только функции. Свойствоvalue
принимает любое значение. При вызове методаObject.defineProperty()
атрибутыconfigurable
,enumerable
иwritable
получают по умолчанию значениеfalse
, если не указано иное.
Так как атрибутvalue
и атрибутыget/set
относятся к разным типам свойств, указывать их одновременно для свойства запрещено. Также запрещено и не имеет смысла указыватьwritable
при наличииget/set
.
Возвращаемое значение
- Объект, который был передан методу в качестве аргумента.
Пример
var user = {}; Object.defineProperty(user, "age", { writable: false, value: 25 }); alert(user.age); // 25 user.age = 10; alert(user.age); // 25