ARCHIV |
|||||
Software (10844)
Distribuce (131)
Skripty (697)
Menu
Diskuze
Informace
|
JAK na třídyV minulém článku o JAK sem shrnul základní metody a mechanismy, které se hodí každému programátorovi. JavaScript je však jazyk objektový, a i JAK je na objektech založen. Jak se s objekty a jejich třídy pracuje, se pokusím vysvětlit v tomto článku. Základním prvkem knihovny je tedy objekt, instance třídy, resp. instance JAK třídy. JAK totiž obsahuje obal pro definici a aplikaci tříd, obdobně, jako to známe z ostatních objektových jazyků např. C++. Můžete tak například snadno definovat třídu, která dědí z jiné, nebo je singltonem. První příklad ukazuje jak se takové třídy za pomocí knihovny JAK vytvářejí: var Terorist = JAK.ClassMaker.makeClass({V kódu je vidět jak se definuje třída pomocí ClassMakeru. Parametry metody makeClass jsou název a verze třídy. Na dalším řádku je vidět definice statické proměnné. Ta je sdílená napříč všemi instancemi třídy. Dynamická proměnná (tedy lokální pro každou instanci) je přístupná přes operátor this. Přístup do paměti takové proměnné je copy_on_write, tedy vlastní skutečná kopie proměnné nastává až v okamžiku zápisu přes this. Zápis přes Trida.prototype mění statickou hodnotu, kterou uvidí všechny instance které si nevytvořili vlastní kopii zápisem. Na definici metod není nic zvláštního až na specifickou metodu $constructor. Ta je volána po vytvoření objektu automaticky, pokud existuje. Lze definovat i metodu $destructor, nicméně ta se při mazání automaticky nevolá, a musíte si jí tak zavolat sami. Ostatní kód již netřeba komentovat, vytvoříme instanci třídy a zavoláme její metodu. DědičnostTřída která je potomkem jiné třídy se v JAKu definuje neskutečně jednoduše, prostě metodě makeClass dáte ještě jeden parametr EXTEND a v něm uvedete rodiče oné třídy. Možnosti dědičnosti jsou však značně omezené a to také naznačuje následující ukázka. var Bomberman = JAK.ClassMaker.makeClass({ Pokud chceme aby nějaká metoda potomka třídy zavolala metodu svého rodiče, provedeme to metodou $super. Ta volá metodu rodiče, která je stejná jako metoda, ve které je $super použito, viz definice metod $constructor. Je jí tím pádem možné volat pouze v metodě se stejným názvem, tedy v takové, kterou přepisujeme. Dále můžeme dědit jen z jedné třídy, ale ta může být potomkem jiné. V případě že potřebujete volat libovolnou metodu libovolného předka, použijete zápis Prarodic.prototype.method.call(this, arg1, arg2...), tak jak je to v ukázce u metody Bomberman.prototype.talk. No a nakonec nemůžeme definovat metody, které je možné přepsat. InterfaceDalší způsob jak rozšířit funkčnost nějaké třídy je použít Interface (rozhraní). Těch může být uvedeno více, a v případě konfliktů v názvech metod vyhrává metoda z posledního uvedeného rozhraní. Kombinace rodiče (EXTEND) a rozhraní (IMPLEMENT) není vyloučena, což ukazuje i následující kód. var Hacker = JAK.ClassMaker.makeInterface({ Singleton a Statická třídaZvláštní lahůdkou na závěr jsou třídy typu Singleton a Statické třídy, jejich význam je obdobný. Instance těchto tříd nelze vytvořit neboť Singleton může být jen jeden, a statická třída nemůže být dynamická :) Než tuto stručnou a prostou informaci doplním ukázkou kódu, nesmím zapomenou upozornit na to, že i tyto typy tříd se v knihovně sami objevují. Které to jsou neprozradím a uložím to laskavému čtenáři za domácí úkol k prozkoumání. // Singleton ZávěremJavaScript je jazyk objektový, ale jeho přístup k objektům je zcela jiný, než v ostatních objektových jazycích. Knihovna JAK se pokouší tyto rozdíly minimalizovat a jazyk samotný rozšířit. Za sebe mohu říct že se jí to daří a přibližuje webové programování ostatním programátorům, kteří jsou zvyklí na jiné objektové jazyky.
Související články
Předchozí Celou kategorii (seriál) Další
JavaScript -- 1 -- Úvod
JavaScript -- 2 -- Verzie JavaScript -- 3 -- Syntax(1) JavaScript -- 4 -- Syntax(2) JavaScript -- 5 -- Podmienky -- IF JavaScript -- 6 -- Switch JavaScript -- 7 -- Cykly JavaScript -- 8 -- Pár praktických skriptov JavaScript -- 9 -- Objekty JavaScriptu JavaScript -- 10 -- Polia JavaScript -- 11 -- DOM JavaScript -- 12 -- Objekt Window (1/2) JavaScript -- 13 -- Objekt Window (2/2) Jak na JAK JAK - III - Vlastní gui na webových stránkách JAK na vlastní checkbox JAK na animované menu JAK na vlastní scrollbar/scrollbox JAK na komplexní ovládací prvky Předchozí Celou kategorii (seriál) Další
|
Vyhledávání software
Vyhledávání článků
28.11.2018 23:56 /František Kučera 12.11.2018 21:28 /Redakce Linuxsoft.cz 6.11.2018 2:04 /František Kučera 4.10.2018 21:30 /Ondřej Čečák 18.9.2018 23:30 /František Kučera 9.9.2018 14:15 /Redakce Linuxsoft.cz 12.8.2018 16:58 /František Kučera 16.7.2018 1:05 /František Kučera
Poslední diskuze
31.7.2023 14:13 /
Linda Graham 30.11.2022 9:32 /
Kyle McDermott 13.12.2018 10:57 /
Jan Mareš 2.12.2018 23:56 /
František Kučera 5.10.2018 17:12 /
Jakub Kuljovsky | |||
ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2024) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze |