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