Metody prywatne
Część sekcji Programowanie obiektowe ścieżki JavaScript w Coddy. Lekcja 19 z 56.
Metody prywatne w klasach JavaScript pozwalają ukryć szczegóły implementacji i uniemożliwiają dostęp z zewnątrz do wewnętrznych funkcji.
Od ES2022 prywatne metody można definiować za pomocą prefiksu #:
class Counter {
#count = 0;
// Utwórz metodę prywatną
#increment() {
this.#count++;
}
// Metoda publiczna, która korzysta z metody prywatnej
addOne() {
this.#increment();
return this.#count;
}
}Utwórzmy instancję licznika:
const myCounter = new Counter();Możemy wywołać metodę publiczną:
console.log(myCounter.addOne()); // Wynik: 1Ale próba bezpośredniego dostępu do prywatnej metody spowoduje błąd:
myCounter.#increment(); // Błąd: Metoda prywatna nie jest dostępna poza klasąMetody prywatne pomagają zachować hermetyzację, ukrywając szczegóły wewnętrznej implementacji przed światem zewnętrznym.
Wyzwanie
Otrzymujesz klasę MessageBox, która przechowuje wiadomości. Twoim zadaniem jest dodanie metody prywatnej o nazwie #isValidMessage(text), która sprawdza poprawność wiadomości. Powinna ona:
- Zwracać
true, jeśli tekst nie jest pusty i ma mniej niż 100 znaków - W przeciwnym razie zwracać
false
Spróbuj swoich sił
import { MessageBox } from './messageBox.js';
// Korzystanie z okna komunikatu
const box = new MessageBox();
console.log(box.setMessage("Hello")); // "Message set!" (używa #isValidMessage)
console.log(box.setMessage("")); // "Invalid message!" (używa #isValidMessage)
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Programowanie obiektowe
1Obiekty i słowo kluczowe this
Szybka powtórka: obiektyDodawanie metod do obiektówZrozumienie słowa kluczowego thisFunkcje konstruktoraSłowo kluczowe newWyzwanie podsumowujące7Dziedziczenie i słowo kluczowe extends
DziedziczenieRelacja „jest rodzajem”Słowo kluczowe extendsMetoda super()Dziedziczenie właściwości i metodWyzwanie podsumowujące10Polimorfizm
Czym jest polimorfizm?Nadpisywanie odziedziczonych metodUżywanie superWyzwanie podsumowujące13Kompozycja a dziedziczenie
Relacja „ma” a relacja „jest”Ograniczenia głębokiego dziedziczeniaTworzenie obiektów2Organizowanie kodu
Czym są moduły?Eksportowanie za pomocą exportImportowanie za pomocą importEksporty domyślne a nazwane5Enkapsulacja i dostęp
EnkapsulacjaPubliczne i prywatne pola klasyMetody prywatneWyzwanie podsumowujące8Organizowanie kodu OOP
Organizowanie klas w moduły11Projekt: Renderer kształtów
Konfiguracja: klasa Shape i eksportDziedziczenie klasy CircleNadpisywanie i metoda obliczania polaStatyczny licznik kształtów14System zarządzania biblioteką
Projektowanie bibliotekiKlasa Book z kompozycjąWalidacja autora książki9Metody i właściwości statyczne
Poziom klasy a poziom instancjiWłaściwości statyczneStatyczne metody pomocniczeWyzwanie podsumowującePoćwicz samodzielnie: Kompilator JavaScript online