Menu
CoddyTech

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 Smith

Zauważ, że nie wywołujemy tych metod z nawiasami. Działają tak jak właściwości, ale wykonują kod podczas odczytu lub modyfikacji.

challenge icon

Wyzwanie

Otrzymujesz klasę User z właściwością age. Twoim zadaniem jest dodanie gettera i settera dla age, które:

  1. Getter <strong>get age()</strong>: zwraca przechowywany wiek
  2. 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!"

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)

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator JavaScript online