Da ES2015, abbiamo la possibilità di utilizzare Getter e Setter per definire proprietà nei nostri oggetti. In questo post capiremo come funzioneremo.
Questo contenuto ha pubblicato prima sulla mia newsletter, la settimana dopo aver pubblicato la newsletter pubblica sul mio blog, se Vuoi essere il primo a leggere ISCRIZIONE
Prima di leggere Questo post consiglio di leggere:
- Comprensione di questo in JavaScript
- Comprensione dei tipi in JavaScript
- Comprensione degli oggetti in JavaScript
Pronta?
In questo momento dovresti conoscere il comportamento e gli attributi del Proprietà degli oggetti in JavaScript.
A questo punto dovrebbe essere chiarito che gli oggetti hanno tre tipi di proprietà:
- Proprietà dei dati: Proprietà normali, che contengono dati.
- Proprietà dell’accessor: Proprietà che cambiano il comportamento standard di
]
e]
- _ Proprietà _internali: _ Proprietà della lingua interna, come
]
,]
o]
tra gli altri.
quali sono i getter e i setter
una funzione che ottiene un valore di una proprietà è denominato Getter e uno che imposta il valore di a Proprietà Si chiama Setter.
Questa funzione è stata implementata in ES2015 e può modificare il normale funzionamento di stabilire o ottenere il valore di una proprietà, è noto come proprietà degli accessori.
Funzionamento
A volte vogliamo valori basati su altri valori, per questo gli accessori dei dati sono abbastanza utili.
Per crearli utilizziamo le parole chiave ottenere e impostare
const obj = { get prop() { return this.__prop__; }, set prop(value) { this.__prop__ = value * 2; },};obj.prop = 12;console.log(obj.prop); //24
Creiamo un oggetto, con una singola proprietà, che ha un getter e un setter. In questo modo ogni volta che impostiamo un valore per il Prop si moltiplicherà per due.
Nota: utilizzare Prop per convenzione, ma non implica che sia un valore speciale, questo è un valore normale.
Un altro modo per creare una proprietà di accessori è esplicitamente utilizzando Object.DefineProperty
const obj = {};Object.defineProperty(obj, //objeto target 'prop', //nombre propiedad { enumerable: true, configurable: true, get prop() { //getter return this.__prop__; }, set prop(value) { //setter this.__prop__ = value * 2; }, });obj.prop = 12;var atr = Object.getOwnPropertyDescriptor(obj, 'prop')console.log(atr);
Il vantaggio che abbiamo in In questo modo, è che possiamo impostare gli attributi che vogliamo avere la proprietà.
Funzionalità
Un accessorio della proprietà, ha solo gli attributi configurabili e _onumerabili, _if vediamo i tuoi attributi noi vedrà questo.
Questo ci porta al valore non può essere sovrascritto se il setter della funzione non è utilizzato ( Si consiglia di definire sia Setter e Getter).
Se la modalità rigorosa non viene utilizzata e tenta di modificare il valore sarà un errore silenzioso.
Un’altra caratteristica importante è che, se è impostata NA proprietà con lo stesso nome in una portata superiore della catena del prototipo, l’accessorio della proprietà, sarà la proprietà che predomina.
Vediamo un ultimo esempio