Getters e setters delle classi in JavaScript
In JavaScript, le classi offrono un modo per definire strutture dati complesse e il loro comportamento associato. Tuttavia, a volte è necessario controllare l'accesso alle proprietà di una classe, consentendo solo operazioni specifiche. Per farlo, JavaScript fornisce i getters e i setters.
L'uso di getter e setter offre diversi vantaggi:
Controllo dell'accesso: possiamo controllare l'accesso alle proprietà private, permettendo solo operazioni valide.
Validazione dei dati: possiamo eseguire controlli o operazioni speciali quando si impostano o si ottengono i valori delle proprietà.
Compatibilità con versioni precedenti: se in futuro dobbiamo apportare modifiche alla gestione delle proprietà, possiamo farlo senza influire sugli utenti che utilizzano la nostra classe.
I getter in JavaScript
Un getter è un metodo all'interno di una classe che viene utilizzato per ottenere il valore di una proprietà privata. I getter vengono definiti utilizzando la parola chiave get seguita dal nome del metodo. Ecco un esempio:
class Cerchio {
constructor(raggio) {
this._raggio = raggio; // Proprietà privata
}
get area() {
return Math.PI * this._raggio * this._raggio;
}
}
Nell'esempio sopra, abbiamo una classe Cerchio con una proprietà privata _raggio e un getter area. Il getter area ci consente di ottenere l'area del cerchio in base al raggio.
I setter in JavaScript
Un setter è un metodo utilizzato per impostare il valore di una proprietà privata all'interno di una classe. I setter vengono definiti utilizzando la parola chiave set seguita dal nome del metodo. Ecco un esempio:
class Temperatura {
constructor(celsius) {
this._celsius = celsius; // Proprietà privata
}
get fahrenheit() {
return (this._celsius * 9/5) + 32;
}
set fahrenheit(valore) {
this._celsius = (valore - 32) * 5/9;
}
}
Nell'esempio sopra, abbiamo una classe Temperatura con una proprietà privata _celsius, un getter fahrenheit, e un setter fahrenheit. Il setter fahrenheit ci consente di impostare la temperatura in gradi Fahrenheit e calcolare automaticamente il valore equivalente in gradi Celsius.
Esempio di utilizzo di getters e setters in JavaScript
Ora che abbiamo definito getter e setter, vediamo come usarli:
class Cerchio {
constructor(raggio) {
this._raggio = raggio; // Proprietà privata
}
get area() {
return Math.PI * this._raggio * this._raggio;
}
}
class Temperatura {
constructor(celsius) {
this._celsius = celsius; // Proprietà privata
}
get fahrenheit() {
return (this._celsius * 9/5) + 32;
}
set fahrenheit(valore) {
this._celsius = (valore - 32) * 5/9;
}
}
const mioCerchio = new Cerchio(5);
console.log(mioCerchio.area); // Output: 78.53981633974483
const miaTemperatura = new Temperatura(22);
console.log(miaTemperatura.fahrenheit); // Output: 71.6
miaTemperatura.fahrenheit = 80;
console.log(miaTemperatura.fahrenheit); // Output: 80
console.log(miaTemperatura._celsius); // Output: 26.666666666666668
Indice pagine di javascript
Indice javascript