Private Methoden
Teil des Abschnitts Objektorientierte Programmierung der JavaScript-Journey von Coddy — Lektion 19 von 56.
Private Methoden in JavaScript-Klassen ermöglichen es Ihnen, Implementierungsdetails zu verbergen und den externen Zugriff auf interne Funktionalitäten zu verhindern.
Ab ES2022 können private Methoden mit dem #-Präfix definiert werden:
class Counter {
#count = 0;
// Erstelle eine private Methode
#increment() {
this.#count++;
}
// Öffentliche Methode, die die private Methode verwendet
addOne() {
this.#increment();
return this.#count;
}
}Erstellen wir eine Counter-Instanz:
const myCounter = new Counter();Wir können die öffentliche Methode aufrufen:
console.log(myCounter.addOne()); // Ausgabe: 1Aber der Versuch, direkt auf die private Methode zuzugreifen, wird einen Fehler verursachen:
myCounter.#increment(); // Fehler: Private Methode ist außerhalb der Klasse nicht zugänglichPrivate Methoden helfen dabei, die Kapselung aufrechtzuerhalten, indem sie interne Implementierungsdetails vor der Außenwelt verborgen halten.
Aufgabe
Dir wird eine MessageBox-Klasse gegeben, die Nachrichten speichert. Deine Aufgabe ist es, eine private Methode namens #isValidMessage(text) hinzuzufügen, die Nachrichten validiert. Sie sollte:
truezurückgeben, wenn der Text nicht leer ist und weniger als 100 Zeichen hat- Andernfalls
falsezurückgeben
Spickzettel
Private Methoden in JavaScript-Klassen werden mit dem Präfix # definiert und können nur von innerhalb der Klasse aufgerufen werden:
class Counter {
#count = 0;
// Private Methode
#increment() {
this.#count++;
}
// Öffentliche Methode, die die private Methode verwendet
addOne() {
this.#increment();
return this.#count;
}
}Auf private Methoden kann nicht von außerhalb der Klasse zugegriffen werden:
const myCounter = new Counter();
myCounter.addOne(); // Funktioniert
myCounter.#increment(); // Fehler: Private Methode ist nicht zugänglichPrivate Methoden helfen dabei, die Kapselung aufrechtzuerhalten, indem sie interne Implementierungsdetails verbergen.
Probier es selbst
import { MessageBox } from './messageBox.js';
// Verwendung der Nachrichtenbox
const box = new MessageBox();
console.log(box.setMessage("Hello")); // "Message set!" (verwendet #isValidMessage)
console.log(box.setMessage("")); // "Invalid message!" (verwendet #isValidMessage)
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Objekte & das this-Schlüsselwort
Kurze Wiederholung: ObjekteMethoden zu Objekten hinzufügenDas this-Schlüsselwort verstehenKonstruktorfunktionenDas new-SchlüsselwortWiederholungs-Challenge7Vererbung & das extends-Schlüsselwort
VererbungDie „ist-ein“-BeziehungDas extends-SchlüsselwortDie super()-MethodeVererben von Eigenschaften & MethodenWiederholungs-Challenge10Polymorphie
Was ist Polymorphie?Geerbte Methoden überschreibenVerwendung von superWiederholungs-Challenge13Komposition vs. Vererbung
Die "hat-ein"- vs. "ist-ein"-BeziehungDie Grenzen tiefer VererbungObjekte zusammenbauen2Code organisieren
Was sind Module?Exportieren mit exportImportieren mit importDefault- vs. benannte Exports5Kapselung & Zugriff
KapselungÖffentliche & private KlassenfelderPrivate MethodenWiederholungs-Herausforderung8OOP-Code strukturieren
Klassen in Modulen organisieren11Projekt: Ein Shape-Renderer
Setup: Shape-Klasse & ExportCircle-Klasse: Vererbung14Bibliotheksverwaltungssystem
Entwurf der BibliothekBuch-Klasse mit Komposition3Klassen & Objekte
Was ist eine Klasse?Instanzen erstellenEigenschaften und MethodenWiederholungs-Challenge6Projekt: Ein einfaches Bankkonto
Klasse BankAccountEinzahlungen und Auszahlungen9Statische Methoden & Eigenschaften
Klassenebene vs. InstanzebeneStatische EigenschaftenStatische HilfsmethodenWiederholungs-Challenge12Getter & Setter
Die Schlüsselwörter get und setBerechnete EigenschaftenValidierung und SeiteneffekteWiederholungs-Challenge15Abschluss-Herausforderungen
Spielfiguren-BuilderE-Commerce ProduktsystemUniversitäts-VerwaltungssystemSmart-Home-Gerätesystem