JavaScript/Objektas objekte, nestinimas

Iš Wikibooks.

JAVASCRIPT PROGRAMAVIMO PAGRINDAI
(instrukcinis vadovas pradedantiesiems)[keisti]

Objektas objekte, nestinimas[keisti]


Pasinaudokime prieš tai buvusioje pamokoje sukurtu objektu „stelmužėsĄžuolas“:

  • stelmužėsĄžuolas = { pavadinimas:"Stelmužės ąžuolas", rūšis:"paprastasis ąžuolas", amžius:"1500 metų", aukštis:"19 m", kamienoApimtis:"9,58 m" };

Jei norėtumėme objektu aprašyti Stelmužės Ąžuolo vietą, pamatytumėme, kad šis aprašymas turėtų nemažai duomenų: valstybė – Lietuva, rajonas – Zarasų, seniūnija – Imbrado, kaimas – Stelmužė, urėdija – Zarasų miškų. Natūralu būtų sukurti tam atskirą objektą, tad tai ir padarome:

  • stelmužėsĄžuoloVieta = { valstybė:"Lietuva", rajonas:"Zarasų", seniūnija:"Imbrado", kaimas:"Stelmužė", urėdija:"Zarasų miškų" };

Kartu mes norėtume, kad šio objekto duomenys būtų ir Stelmužės ąžuolo objekto duomenimis, tad paimame ir įvedame į objektą „stelmužėsĄžuolas“ naują savybę „vieta“, kuriai priskiriame objektą „stelmužėsĄžuoloVieta“:

  • stelmužėsĄžuolas.vieta = stelmužėsĄžuoloVieta;
  • stelmužėsĄžuolas;

Išskleidus objekto „stelmužėsĄžuolas“ aprašymą konsolėje jūs pamatysite naują išskleidžiama savybę „vieta“ jame, kuri yra kitas objektas.

Stelmužės ąžuolo koordinatės yra specialūs duomenys, kuriuos mes irgi norėtumėme turėti viename objekte. Jos yra: šiaurės platuma – 55.829981°, rytų ilguma – 26.217589°.

  • stelmužėsĄžuoloKoordinatės = {šiaurėsPlatuma:"55.829981°", rytųIlguma:"26.217589°"};

Atitinkamai koordinates galima įterpti į objekto „stelmužėsĄžuolas“ savybės „vieta“ savybę „koordinatės“:

  • stelmužėsĄžuolas.vieta.koordinatės = stelmužėsĄžuoloKoordinatės;
  • stelmužėsĄžuolas;

Išskleidus objekto „stelmužėsĄžuolas“ aprašymą konsolėje jūs pamatysite išskleidžiamą savybę „vieta“, o išskleidę ją` rasite dar vieną išskleidžiamą savybę „koordinatės“.

Toks objektų konstravimas JS vadinamas nestinimu (nuo angl. nesting, liet. „lizdo sukimas“). Ir daug kur JS programose reikia atkreipti dėmesį, kur kuris objektas yra įnestintas ir kokiame lygyje.

Šioje pamokoje mes į objektą „stelmužėsĄžuolas“ įnestinome kitus objektus. Dabar paimkime ir ištrinkime juos su delete raktažodžiu:

  • delete stelmužėsĄžuoloVieta;
  • delete stelmužėsĄžuoloKoordinatės;
  • stelmužėsĄžuolas;

Jūs pastebėsit, kad objekte „stelmužėsĄžuolas“ savybės „vieta“ ir „koordinatės“ išliko. Iš tikro, mes galėjome jas įvesti iš karto pasinaudoję taško sintakse ir jei norime pasiekti savybę „šiaurėsPlatuma“, tai atrodo taip:

  • stelmužėsĄžuolas.vieta.koordinatės.šiaurėsPlatuma;

Patį „stelmužėsĄžuolas“ lygį pavadinkime nuliniu. Tuomet „vieta“ bus pirmame lygyje, „koordinatės“ – antrame ir „šiaurėsPlatuma“ – trečiame. Jums tai gali pasirodyti keista, bet jūs greitai priprasite, kad JS daug kur skaičiavimas prasideda nuo nulio.

Užduotis. Savarankiškai objekte „rumšiškiųMiškoPušis“ įnestinkite objektus „vieta“ ir „koordinatės“. Vietos duomenys: valstybė – Lietuva, rajonas – Kaišiadorių, seniūnija – Rumšiškių, urėdija – Kaišiadorių miškų. Koordinačių duomenys: šiaurės platuma – 54.875197°, rytų ilguma – 24.154289°.