9. Obiekty i dostęp do właściwości

~35 min podstawowy

Obiekty przechowują pary klucz-wartość. Klucze to zwykle stringi.

Tworzenie obiektu

const osoba = {
  imie: "Jan",
  nazwisko: "Kowalski",
  wiek: 32,
  czyStudent: false,
  adres: {
    miasto: "Warszawa",
    ulica: "Prosta 1"
  }
};

Dostęp do właściwości

console.log(osoba.imie);                // Jan
console.log(osoba["nazwisko"]);         // Kowalski
osoba.wiek = 33;                        // modyfikacja
osoba["zawod"] = "programista";        // dodanie nowej

Metody w obiektach

const auto = {
  marka: "Toyota",
  model: "Corolla",
  rok: 2020,
  przedstawSie() {
    return `${this.marka} ${this.model} (${this.rok})`;
  }
};

console.log(auto.przedstawSie());  // Toyota Corolla (2020)
Ciekawostka: this odnosi się do obiektu, w którym metoda jest zdefiniowana (uwaga przy arrow functions!).

Object methods

console.log(Object.keys(osoba));     // ["imie", "nazwisko", "wiek", ...]
console.log(Object.values(osoba));
console.log(Object.entries(osoba));
Ostrzeżenie: Nie używaj arrow function jako metody obiektu jeśli potrzebujesz this.

Ćwiczenie

  1. Stwórz obiekt książka {tytul, autor, rok, przeczytana: false}.
  2. Dodaj metodę przeczytaj() zmieniającą przeczytana na true.
  3. Wypisz wszystkie klucze obiektu za pomocą Object.keys().

Poprawka do oryginału: Dodano zagnieżdżone obiekty, metody, Object.*, ostrzeżenie o this.