Supr. A jak se udělá objekt, který nese skryté stavy, ale pracuje s nimi vlastními metodami implementovanými
v prototypu proto, aby ony metody nemusel každý další objekt implementovat znovu? Neboli obdoba třídně-instanční
implementace se sdílenými metodami a vlastními stavy.
Kurna co jsme tady lektori kurzu JavaScript for dummies? Dyt si to vybinguj.
1. v JS neexistuje neco jako "skryte", "privatni" atd. Nac taky kdyz zdrojak muze kazdy videt. Ano je mozne pomoci nejakych design patternu docilit schovani metod ci properties, ale to dnes uz delaj jenom prasata.
Vznesenym JS koderum staci videt
this._ja_jsem_jakoze_private a vedi, ze to neni soucast api a na to se nesaha.
2. Moc nechapu co vlastne chces, ale "interface" v JS neexistuje. Ano muzeme se hrat s nazvoslovim, ze nejaka trida ma prazdne metody a dovnitr si nacpes
console.log('not implemented yet') a od ni si to podedis. Takze opet design pattern pro prebehliky z Javy a C++. Vzneseny JS koder to povazuje za prasarnu a interface neresi.
3. Objektovy odel JS je uplne jednoduchy. Berte JS spise jako assembler. Ma tridy, dedicnost a prototypy, to je vse. Muzete ho vytunit nejakymi paternama nebo frameworkem aby se hral na mixiny, abstraktni tridy, interfejsy, protected, private, pretizene operatory a co ja vim jaky OOP balast vas jeste napadne.
Vzneseny JS koder to ale neresi, protoze to zvysuje komplexitu a neprehlednost kodu a uz se pak nemuzeme bavit o jednoduchosti. Jestli bez toho nemuzete zit tak se poohlednete po nejakym Angularu a postavste si celu industrialni zonu se vsemy factories facades a dalsimi chlivkama pro prasata.
4. Zhrnu to tedy. V JS je defacto vse objekt a tak muzete objektovo orientovane programovat vasi MVC apku. Ale to uz je dnes povazovano za primitivni a neefektivni. Frcime spise na MVVM/MVI, proudy dat, eventy, promisy, immutable, subscribery, listenery a vubec spise reaktivni funkcionalni programovani.