Метода ЈаваСцрипт Објецт.дефинеПроперти () додаје или модификује постојеће својство објекта и враћа га.
Синтакса 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
) се могу мењати.
Препоручена литература: Јавасцрипт објекат дефинеПропертиес ()