Меню

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