I campi privati delle classi in JavaScript

I campi privati sono variabili o proprietà di una classe che non sono direttamente accessibili dall'esterno della classe. In altre parole, sono nascosti all'esterno della classe e possono essere acceduti solo dai metodi all'interno della stessa classe. Questo concetto è importante perché consente di nascondere dati sensibili o complessi all'esterno della classe.

Come dichiarare campi privati in JavaScript

Per dichiarare campi privati in JavaScript, utilizziamo il prefisso # prima del nome del campo. Ad esempio:

class Persona {
	#nome;
	#cognome;

	constructor(nome, cognome) {
		this.#nome = nome;
		this.#cognome = cognome;
	}

	saluta() {
		return `Ciao, sono ${this.#nome} ${this.#cognome}.`;
	}
}

Nell'esempio sopra, abbiamo dichiarato due campi privati #nome e #cognome all'interno della classe Persona.

Come accedere ai campi privati di una classe in JavaScript

Poiché i campi privati non possono essere acceduti direttamente dall'esterno della classe, dobbiamo utilizzare metodi pubblici per leggere o modificare tali campi. Ad esempio:

const persona = new Persona("Mario", "Rossi");
console.log(persona.saluta()); // Restituirà "Ciao, sono Mario Rossi."

// Modifica dei campi privati
persona.#nome = "Luca"; // Errore! Impossibile accedere direttamente.

Uno dei metodi più comuni per accedere ai campi privati di una classe, consiste nell’utilizzare i getters e setters.

Vantaggi dei campi privati

L'uso di campi privati offre diversi vantaggi:

  • Incapsulamento: i campi privati consentono di incapsulare dati sensibili o complessi, evitando l'accesso non autorizzato.
  • Mantenimento dei Dati: poiché i campi privati possono essere modificati solo da metodi della classe, è possibile implementare la logica di controllo per garantire che i dati rimangano coerenti.
  • Estensibilità: se in futuro è necessario apportare modifiche alla classe, è possibile farlo senza dover modificare il codice esterno che utilizza la classe.
  • Riduzione dei Bug: nascondendo dati sensibili, si riduce il rischio di errori e bug dovuti a modifiche accidentali.