Методът JavaScript Object.defineProperty () добавя или модифицира съществуващо свойство на обект и връща обекта.
Синтаксисът на defineProperty()метода е:
 Object.defineProperty(obj, prop, descriptor)
В defineProperty()метода, който е статичен метод, се нарича използване на Objectимето клас.
defineProperty () Параметри
В defineProperty()метода се в:
- obj - Обектът, върху който да се дефинира свойството.
- prop - Името или Symbolна свойството, което ще бъде дефинирано или модифицирано.
- дескриптор - дескрипторът на свойството, което се дефинира или модифицира.
Дескрипторите на свойствата, присъстващи в обектите, са два вида: дескриптори на данни и дескриптори на достъп. Те могат да имат следните незадължителни свойства.
- configurable
- enumerable
Дескрипторите на данни също могат да имат:
- value
- writable
Дескрипторите на достъп могат също да имат:
- get
- set
Върната стойност от defineProperty ()
- Връща обекта, който е предаден на функцията.
Забележка:
- По подразбиране стойностите, добавени с помощта, Object.defineProperty()са неизменни и не се изброяват.
- Ако част от описание няма нито на value,writable,getиsetключове, той се третира като описател на данни. Ако дескрипторът има иvalueилиwritableиgetилиsetключове, се извежда изключение.
Пример: Добавяне на свойство за данни към обект
 let obj = (); // with a data property descriptor Object.defineProperty(obj, "property1", ( value: 788, writable: true, enumerable: true, configurable: true, )); console.log(obj.property1); // 788 // with an accessor property descriptor Object.defineProperty(obj, "property2", ( get() ( console.log("Getting Value… "); return val; ), set(newVal) ( console.log("Setting Value… "); val = newVal; ), enumerable: true, configurable: true, )); obj.property2 = 6969; // Setting Value… console.log(obj.property2); // 6969
Изход
788 Задаване на стойност … Получаване на стойност … 6969
Не можем да смесваме както данни, така и дескриптори на свойства на достъп, тъй като това ще доведе до грешка.
За да модифицирате свойство, свойството на обекта writableтрябва да бъде true, в противен случай няма да модифицира и изхвърля грешка в строг режим.
В enumerableатрибута собственост определя дали имотът е избрана от Object.assign()или разпространение оператор.
На configurableконтролите на атрибутите в същото време дали имота могат да бъдат изтрити от обекта и дали неговите атрибути (различни от valueи writable) могат да се променят.
Препоръчително четене: Javascript Object defineProperties ()








