Menu
Coddy logo textTech

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 sposobem dostępu do właściwości i ich modyfikowania.

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];
  }
}

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ł właściwości wewnętrzne
console.log(person.fullName); // Wynik: Jane Smith

Zauważ, że nie wywołujemy tych metod z nawiasami. Zachowują się jak właściwości, ale wykonują kod, gdy uzyskujemy do nich dostęp lub je modyfikujemy.

challenge icon

Wyzwanie

Dostajesz klasę User z właściwością age. Twoim zadaniem jest dodanie akcesora odczytu i akcesora zapisu dla age, które:

  1. Akcesor odczytu <strong>get age()</strong>: zwraca zapisaną wartość wieku
  2. Akcesor zapisu <strong>set age(newAge)</strong>: sprawdza, czy wiek mieści się w przedziale 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 wyświetl "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 wypisać 25

user.age = 30;
console.log(user.age);      // Powinno wypisać 30

user.age = 150;             // Powinno pokazać "Invalid age!"
console.log(user.age);      // Nadal powinno wypisać 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