Menu
Coddy logo textTech

Enkapsulacja

Część sekcji Programowanie obiektowe ścieżki JavaScript w Coddy. Lekcja 17 z 56.

Enkapsulacja to proces łączenia danych wewnątrz klasy w jedną całość.

Pomaga to ograniczyć bezpośredni dostęp do danych klasy, co ostatecznie pozwala zapobiegać ich przypadkowym modyfikacjom. 

Zobaczmy enkapsulację w działaniu na prostym przykładzie. Utwórzmy podstawowy obiekt z publicznymi właściwościami:

const user = {
  name: "John",
  email: "john@example.com"
};

Każdy może bezpośrednio uzyskiwać dostęp do tych właściwości i je modyfikować:

user.name = "Jane"; // Łatwe do zmodyfikowania z zewnątrz
console.log(user.email); // Łatwy dostęp z zewnątrz

Bardziej hermetyczne podejście wykorzystuje domknięcia, aby ukryć dane:

function createUser(name, email) {
  // Te zmienne są prywatne (enkapsulowane)
  let userName = name;
  let userEmail = email;
  
  // Zwróć obiekt z metodami umożliwiającymi dostęp do prywatnych danych
  return {
    getName: function() {
      return userName;
    },
    getEmail: function() {
      return userEmail;
    },
    setName: function(newName) {
      userName = newName;
    }
  };
}
const encapsulatedUser = createUser("John", "john@example.com");

Teraz, aby wejść w interakcję z danymi:

console.log(encapsulatedUser.getName()); // "John"
encapsulatedUser.setName("Jane");
console.log(encapsulatedUser.getName()); // "Jane"

// Nie można uzyskać bezpośredniego dostępu do danych
console.log(encapsulatedUser.userName); // undefined
challenge icon

Wyzwanie

Otrzymujesz kod, który wykorzystuje enkapsulację do ochrony danych użytkownika. Twoim zadaniem jest dodanie metody getAge(), aby uzyskać dostęp do wieku.

Testy sprawdzą:

  • istnienie metody getAge()
  • Zwraca prawidłowy wiek
  • Informacje o wieku pozostają prywatne

Oczekiwany wynik:

john_doe

25

Spróbuj swoich sił

import { createUser } from './createUser.js';

// Kod testowy — nie modyfikuj
const user = createUser("john_doe", 25);
console.log(user.getUsername()); // Powinno wypisać "john_doe"
console.log(user.getAge());      // Powinno wypisać 25

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