Javascript Object.defineProperty ()

Il metodo JavaScript Object.defineProperty () aggiunge o modifica la proprietà esistente su un oggetto e restituisce l'oggetto.

La sintassi del defineProperty()metodo è:

 Object.defineProperty(obj, prop, descriptor)

Il defineProperty()metodo, essendo un metodo statico, viene chiamato utilizzando il Objectnome della classe.

parametri defineProperty ()

Il defineProperty()metodo comprende:

  • obj - L'oggetto su cui definire la proprietà.
  • prop - Il nome o Symboldella proprietà da definire o modificare.
  • descrittore - Il descrittore della proprietà da definire o modificare.

I descrittori di proprietà presenti negli oggetti sono di due tipi: descrittori di dati e descrittori di accesso. Possono avere le seguenti proprietà opzionali.

  • configurable
  • enumerable

Un descrittore di dati può anche avere:

  • value
  • writable

I descrittori di una funzione di accesso possono anche avere:

  • get
  • set

Valore restituito da defineProperty ()

  • Restituisce l'oggetto passato alla funzione.

Nota:

  • Per impostazione predefinita, i valori aggiunti utilizzando Object.defineProperty()sono immutabili e non enumerabili.
  • Se un descrittore ha né di value, writable, gete setchiavi, viene trattata come un descrittore di dati. Se un descrittore ha le chiavi valueo writablee geto set, viene generata un'eccezione.

Esempio: aggiunta di una proprietà dati all'oggetto

 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

Produzione

 788 Impostazione del valore … Ottenere valore … 6969

Non è possibile combinare descrittori di proprietà dei dati e delle funzioni di accesso poiché genererebbe un errore.

Per modificare una proprietà, la proprietà dell'oggetto writabledeve essere true, altrimenti non modificherà e genererà errori in modalità rigorosa.

L' enumerableattributo della proprietà definisce se la proprietà viene scelta da Object.assign()o dall'operatore di diffusione.

L' configurableattributo controlla allo stesso tempo se la proprietà può essere cancellata dall'oggetto e se i suoi attributi (diversi da valuee writable) possono essere modificati.

Letture consigliate: oggetto Javascript defineProperties ()

Articoli interessanti...