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