Kódím.cz
6

Objekty a pole

Představíme si, jak v JavaScriptu strukturovat obsáhlejší data

Objekty

Prozatím jsme v naších programech pracovali pouze s čísly, řetězci a pravdivostními hodnotami. V reálnějších programech však budeme potřebovat do naších proměných uložit více než pouze jednu informaci. Představte si například, že chceme evidovat doručovací adresu uživatele e-shopu. Každá adresa má ulici, číslo domu, město a PSČ. Takovou informaci bychom mohli zkusit nacpat do jednoho řetězce třeba takto.

const address = 'Pod Kaštany 31, 123 11 Horní Dlouhonosy';

Vysekat z takového řetězce jednotlivé údaje je ovšem dost pracné a našikovné. Pokud chceme informace lépe strukturovat, použijeme v JavaScriptu takzvané objectsobjekty.

const address = {
  streetName: 'Pod Kaštany',
  number: 31,
  city: 'Horní Dlouhonosy',
  postalCode: '123 11',
};

Objekt vytvoříme tak, že do složených závorek vložíme čárkou oddělené záznamy, kterým se říká propertiesvlastnosti. Každá vlastnost sestává z takzvaného keyklíče a valuehodnoty.

Pomocí klíčů pak můžeme z objektu získat jednotlivé hodnoty použitím takzvané dot notationtečkové notace.

address.city // ⟶ "Horní Dlouhonosy"
address.streetName // ⟶ "Pod Kaštany"
address.number // ⟶ 31

Klíče v objektu se chovají podobně jako proměnné. Řídí se stejnými pravidly pro názvosloví. Můžete tedy mít objekty třeba v hadí notací.

const address = {
  street_name: 'Pod Kaštany',
  number: 31,
  city: 'Horní Dlouhonosy',
  postal_code: '123 11',
};

Nelze však použít například klíče s pomlčkou.

const address = {
  street-name: 'Pod Kaštany',
  number: 31,
  city: 'Horní Dlouhonosy',
  postal-code: '123 11',
};

Hodnoty uvnitř objektů lze také měnit. Takto například můžeme změnit číslo ulice.

address.number = 28;

Všimněte si, že při vytváření objekt ukládáme do proměnné, jde tedy o nový typ hodnoty, podobně jako číslo nebo řetězec. To mimo jiné znamená, že uvnitř objektu můžeme mít vnořené další objekty. Takto bychom mohli například reprezentovat uživatele i s doručovací adresou.

const user1 = {
  fullName: 'Lubomír Větvička',
  login: 'lubos',
  address: {
    streetName: 'Pod Kaštany',
    number: 31,
    city: 'Horní Dlouhonosy',
    postalCode: '123 11',
  },
  cartItems: 0,
};

Kdybychom pak chtěli získat například město, kam máme objednané zboží doručit, opět použijeme tečkovou notaci.

user1.address.city // ⟶ "Horní Dlouhonosy"

Díky objektům tak můžeme v našich programech reprezentovat i velmi komplikovaná data.