Јавасцрипт Објецт.дефинеПроперти ()

Метода ЈаваСцрипт Објецт.дефинеПроперти () додаје или модификује постојеће својство објекта и враћа га.

Синтакса defineProperty()методе је:

 Object.defineProperty(obj, prop, descriptor)

defineProperty()Метода, као статичког метода, зове се користи Objectназив класе.

дефинеПроперти () Параметри

defineProperty()Метод узима у:

  • обј - објекат на коме се дефинише својство.
  • проп - назив или Symbolсвојство које треба дефинисати или изменити.
  • дескриптор - дескриптор својства које се дефинише или модификује.

Дескриптори својстава присутни у објектима су два типа: дескриптори података и дескриптори приступника. Могу имати следећа опциона својства.

  • configurable
  • enumerable

Дескриптори података такође могу имати:

  • value
  • writable

Дескриптори приступа могу такође имати:

  • get
  • set

Врати вредност из дефинеПроперти ()

  • Враћа објект који је прослеђен функцији.

Белешка:

  • Подразумевано су вредности додате помоћу 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) се могу мењати.

Препоручена литература: Јавасцрипт објекат дефинеПропертиес ()

Занимљиви Чланци...