Metodi privati
Fa parte della sezione Programmazione orientata agli oggetti del percorso JavaScript di Coddy. Lezione 19 di 56.
I metodi privati nelle classi JavaScript ti permettono di nascondere i dettagli di implementazione e impedire l’accesso esterno alle funzionalità interne.
A partire da ES2022, i metodi privati possono essere definiti usando il prefisso #:
class Counter {
#count = 0;
// Crea un metodo privato
#increment() {
this.#count++;
}
// Metodo pubblico che utilizza il metodo privato
addOne() {
this.#increment();
return this.#count;
}
}Creiamo un'istanza di Counter:
const myCounter = new Counter();Possiamo chiamare il metodo pubblico:
console.log(myCounter.addOne()); // Output: 1Ma provare ad accedere direttamente al metodo privato causerà un errore:
myCounter.#increment(); // Errore: il metodo privato non è accessibile all'esterno della classeI metodi privati aiutano a mantenere l'incapsulamento tenendo nascosti al mondo esterno i dettagli interni dell'implementazione.
Sfida
Ti viene fornita una classe MessageBox che memorizza messaggi. Il tuo compito è aggiungere un metodo privato chiamato #isValidMessage(text) che convalida i messaggi. Dovrebbe:
- Restituire
truese il testo non è vuoto e contiene meno di 100 caratteri - Restituire
falsealtrimenti
Provalo tu
import { MessageBox } from './messageBox.js';
// Utilizzo della finestra di messaggio
const box = new MessageBox();
console.log(box.setMessage("Hello")); // "Message set!" (usa #isValidMessage)
console.log(box.setMessage("")); // "Invalid message!" (usa #isValidMessage)
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Programmazione orientata agli oggetti
1Oggetti e la keyword this
Ripasso rapido: oggettiAggiungere metodi agli oggettiCapire la keyword thisFunzioni costruttriciLa keyword newSfida di ripasso7Ereditarietà e parola chiave extends
EreditarietàLa relazione «è un»La parola chiave extendsIl metodo super()Ereditare proprietà e metodiSfida di ripasso13Composizione vs. ereditarietà
«Ha-un» vs. «è-un»I limiti dell’ereditarietà profondaCostruire oggetti2Organizzare il codice
Cosa sono i moduli?Esportare con exportImportare con importExport predefiniti vs. export nominati5Incapsulamento e accesso
IncapsulamentoCampi di classe pubblici e privatiMetodi privatiSfida di riepilogo8Organizzare il codice OOP
Organizzare le classi in moduli11Progetto: Un renderizzatore di forme
Configurazione: classe Shape ed esportazioneEreditarietà della classe CircleOverride e metodo areaContatore statico di Shape14Sistema di gestione della biblioteca
Progettare la bibliotecaClasse Book con composizioneValidazione dell'autore del libroEsercitati da solo: Compilatore JavaScript online