Słowa kluczowe get i set
Część sekcji Programowanie obiektowe ścieżki JavaScript w Coddy. Lekcja 43 z 56.
Gettery i settery to specjalne metody, które wyglądają jak właściwości, ale w rzeczywistości są funkcjami. Dają Ci kontrolę nad tym, jak uzyskuje się dostęp do właściwości i jak się je modyfikuje.
Stwórzmy prostą klasę Person:
class Person {
constructor(firstName, lastName) {
this._firstName = firstName;
this._lastName = lastName;
}
// Getter dla fullName
get fullName() {
return `${this._firstName} ${this._lastName}`;
}
// Setter dla fullName
set fullName(value) {
const parts = value.split(' ');
this._firstName = parts[0];
this._lastName = parts[1];
}
}Podkreślenie w _firstName i _lastName to konwencja nazewnictwa: informuje innych programistów, że te właściwości są wewnętrzne i należy je odczytywać i zmieniać za pomocą gettera i settera, a nie bezpośrednio. JavaScript tego nie wymusza.
Teraz możemy używać tych getterów i setterów jak właściwości:
// Utwórz nowy obiekt Person
const person = new Person('John', 'Doe');
// Użyj gettera
console.log(person.fullName); // Wynik: John Doe
// Użyj settera
person.fullName = 'Jane Smith';
// Setter zaktualizował wewnętrzne właściwości
console.log(person.fullName); // Wynik: Jane SmithZauważ, że nie wywołujemy tych metod z nawiasami. Działają tak jak właściwości, ale wykonują kod podczas odczytu lub modyfikacji.
Wyzwanie
Otrzymujesz klasę User z właściwością age. Twoim zadaniem jest dodanie gettera i settera dla age, które:
- Getter
<strong>get age()</strong>: zwraca przechowywany wiek - Setter
<strong>set age(newAge)</strong>: sprawdza, czy wiek mieści się w zakresie od 0 do 120- Jeśli jest prawidłowy (0-120): zapisz go w
this._age - Jeśli jest nieprawidłowy: nie zmieniaj go i wypisz
"Invalid age!"
- Jeśli jest prawidłowy (0-120): zapisz go w
Spróbuj swoich sił
import { User } from './user.js';
// Kod testowy – nie modyfikuj
const user = new User("Alice", 25);
console.log(user.age); // Powinno wyświetlić 25
user.age = 30;
console.log(user.age); // Powinno wyświetlić 30
user.age = 150; // Powinno wyświetlić "Invalid age!"
console.log(user.age); // Powinno nadal wyświetlić 30 (bez zmian)
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ące12Gettery i settery
Słowa kluczowe get i setWłaściwości obliczaneWalidacja i efekty uboczneWyzwanie podsumowującePoćwicz samodzielnie: Kompilator JavaScript online