Diskuze: js a tridy
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Dobře, vraťme se na začátek.
V JS tridy funguji, jen to musis spravne zapsat.
Já
V JS třída NEEXSTIUJE... ...Class je tzv. "syntaktický cukr" pro konstrukor funkci.
Otazkou je, jaky by melo smysl tam pridavat kod pro vytvareni trid...
Kde jsem se o tom zmínil? Dokonce, aby toho nebylo málo, poukázal jsem na přirozenost JavaScriptu (konkrétně prototypů a callbacků).
Celý JavaScript je postaven na prototypech a přirozené schopnosti delegace úloh (callbacky). Žádné přetížení operátorů, žádné třídy, žádná rozhraní.
Můj jediný "definzivní" argument vůči TypeScriptu a "třídám" byl následující:
...Navíc díky ES6 a TypeScriptu můžeš psát kód, který je skoro identický C#.
Celá pointa tohoto komentáře byla "namotivovat" David Klouček, aby nemyslel, že JavaScript je "zapeklitý jazyk", ale naopak, obrovská příležitost na dnešním trhu.
Tridy....
tento odstavec nebudu komentovat, protože je to obecná teorie tříd (se kterou souhlasím), tudíž odklonění od původního tématu - v JS třídy neexistují jsou to konstruktor funkce.
JS nemá triedy len preto, že bol inak myslený, nie z dôvodov tebou uvedených. Avšak, v praxi sa ukázalo, že sa "klasický" class syntax predsa len hodí...
Kvôli neschopním užívateľom. Hlavne takím, ako ten, čo sem písal, aký je JS zlý. Rýchlo kvasení programátori ktorí v praxi videli len OOP paradigmu, napríklad v C#, a tak je nad ich sily pochopiť dedičnosť postavenú nad reťazcom prototypov. No tak sa teda zaviedol do JS syntaktický cukor a pribudol class syntax, avšak na pozadí je to stále len a len reťazec prototypov...
To však konečne zafungovalo. Navyše to vcelku sprehľadnilo kód a tak sa toho chytili moderné frameworky. A tam sa ukázalo, že by sa vlastne hodili aj privátne premenné... Nie, že by už dávno nemohol mať JS objekt privátne premenné. Mohol. Ale trikom, cez uzáver, nie typicky, ako to OOP odchovanci očakávajú. To je však spôsob, aký by už lamy vôbec nedali, no tak padlo rozhodnutie, že pribudne aj deklarácia privátnych premenných...
Ony tam už vlastne sú, môžeš to vyskúšať v latest prehliadačoch, alebo použiť Babel...
class Rectangle {
height = 0 // public field
#width // private field
constructor (height, width) {
this.height = height
this.#width = width
}
}
Celý problém je, že deklarácia polí, ako verejných, tak privátnych, je stále len v stage 3. Čiže stále len ako experimentálna vlastnosť. AVŠAK už v stave kandidát, takže vysoká šanca, že aj vyjde v takom tvare v ESnext...
No, ono, class tam opravdu chybi. Ale pouzivat takoveto opisy? Proc nejdou do
klasicke syntaxe?
Neni problem pouzit class jako jakysi spesl tag, neco jako v html kodu tag
script.
Jediny problem i s tim zapisem, co uvadis, muzou mit ruzne syntax-highlight nebo minifikatory a stare prohlizece.
Mne osobne by potesilo, kdyby cely JS prekopaly uplne jinak A kdyby stejna syntax fungovala
napric prohlizeci.
Nebo, kdyby byly univerzalni knihovny, ktere by prohlizec podporoval a nemusel jsi je pouzivat z netu, jako jquery, google mapy a pod.
Nie som si istý, že viem o čom hovoríš. Neexistuje "klasický syntax". Existuje princíp. A implementácia princípu, samotný syntax, dôležitý zrovna nie je. Ten sa zvykne líšiť jazyk od jazyka. A to je v poriadku...
A problém s tým nikto nemá. Určite nie syntax-highlighting, či minifikátory. A že s tým majú problém staré, neudržiavané prehliadače, ktoré proste nič z nového syntaxu nepodporujú ... čo k tomu dodať? Ich problém...
No, ono, class tam opravdu chybi...
Děkuji, to jsem chtěl slyšet.
[me|]53059[/me|]
Naprostý souhlas. A ano, o nejnovějších standardech mám přehled. Odebírám novinky od MDN, TypeScriptu a Microsoftu.
Děkuji za debatu.
Zobrazeno 7 zpráv z 7.