Metoda JavaScript Object.defineProperty () dodaje ili mijenja postojeće svojstvo na objektu i vraća objekt.
Sintaksa defineProperty()
metode je:
Object.defineProperty(obj, prop, descriptor)
defineProperty()
Metoda, kao statičke metode, zove se pomoću Object
ime klase.
defineProperty () Parametri
defineProperty()
Postupak uzima u:
- obj - objekt na kojem se definira svojstvo.
- oslonac - naziv ili
Symbol
svojstvo koje treba definirati ili izmijeniti. - deskriptor - deskriptor svojstva koje se definira ili mijenja.
Deskriptori svojstava prisutni u objektima su dvije vrste: deskriptori podataka i deskriptori pristupa. Mogu imati sljedeća neobavezna svojstva.
configurable
enumerable
Deskriptori podataka također mogu imati:
value
writable
Deskriptori pristupa mogu također imati:
get
set
Vrati vrijednost iz defineProperty ()
- Vraća objekt koji je proslijeđen funkciji.
Bilješka:
- Prema zadanim postavkama vrijednosti dodane pomoću
Object.defineProperty()
nepromjenjive su i nisu nabrojive. - Ako deskriptor ima ni od
value
,writable
,get
iset
tipke, ona se tretira kao deskriptora podataka. Ako deskriptor ima tipke ilivalue
iliwritable
i , pojavljuje se iznimka.get
set
Primjer: Dodavanje svojstva podataka u objekt
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
Izlaz
788 Postavljanje vrijednosti … Dobivanje vrijednosti … 6969
Ne možemo miješati podatke i deskriptore svojstava pristupnika jer bi to stvorilo pogrešku.
Da bi se izmijenilo svojstvo, svojstvo objekta writable
mora biti true
, inače se neće izmijeniti i u strogom načinu izbaciti pogrešku.
enumerable
Atribut svojstvo definira da li je imovina pokupila Object.assign()
ili širiti operatera.
U configurable
atributa kontrole u isto vrijeme da li se nekretnina može biti izbrisana iz objekta, te da li svojim atributima (osim value
i writable
) može se mijenjati.
Preporučena literatura: Javascript objekt definiProperties ()