IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:6.3.2019 12:05

Z tematu https://www.itnetwork.cz/…bdeb3bbd7f14

"JavaScript je postaven na prototypech a přirozené schopnosti delegace úloh (callbacky). Žádné přetížení operátorů, žádné třídy, žádná rozhraní."



Zrovnávaním hrušiek s jablkami?

Ano, doteď existuje spousta vývojářů, kteří si myslí, že Java a JavaScript je to stejné. A právě proto, jsem zdůraznil fakt, že v JS třídy NEEXISTUJÍ.

Takýchto sračiek - flame, zrovnaní a hejtu je plný internet...

Ano, a právě proto jsem popřel neplatný argument Petra, abych předešel nesrovnalostem a "flamu".

Více o třídách na Mozilla Developer Network
https://developer.mozilla.org/…ence/Classes



Otazkou je, jaky by melo smysl tam pridavat kod pro vytvareni trid, na jaky jsi zvykly z jinych jazyku? Pouzivat 'private' nema smysl. Public a static je v podstate vse ostatni.
Takze je mnohem jednodussi pouzit zapisy, ktere jsem uvedl, nez si komplikovat zivot se zapisem trid, jejichz vlastnosti vlastne nevyuzivas.

Tridy

  • maji smysl u serverovych jazyku, kdy se snazi oddelit uzivatele od systemu a od programu
  • maji smysl u prohlizece, kdy se snazi oddelit uzivatele od systemu
  • nemaji smysl u js stranky, kdy pracuji kompletne se strankou a nepotrebuji uzivatele od niceho odriznout. Navic, prohlizece umoznuji tento js kod ovlivnovat uzivatelem. Proste, pres js stejne zadne zabezpeceni delat nemuzes, tak proc tam resit private?

Zkusil jsem: .

Chci docílit: .

 
Odpovědět
6.3.2019 12:05
Avatar
Ilja Židkov
Člen
Avatar
Odpovídá na Peter Mlich
Ilja Židkov:6.3.2019 14:08

Dobře, vraťme se na začátek.

Peter Mlich

V JS tridy funguji, jen to musis spravne zapsat.

V JS třída NEEXSTIUJE... ...Class je tzv. "syntaktický cukr" pro konstrukor funkci.

Peter Mlich

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.

Peter Mlich

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.

 
Nahoru Odpovědět
6.3.2019 14:08
Avatar

Člen
Avatar
Odpovídá na Peter Mlich
:6.3.2019 14:11

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...

 
Nahoru Odpovědět
6.3.2019 14:11
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:6.3.2019 15:18

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.

 
Nahoru Odpovědět
6.3.2019 15:18
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Ilja Židkov
Peter Mlich:6.3.2019 15:24

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.

Editováno 6.3.2019 15:26
 
Nahoru Odpovědět
6.3.2019 15:24
Avatar

Člen
Avatar
Odpovídá na Peter Mlich
:6.3.2019 15:30

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...

 
Nahoru Odpovědět
6.3.2019 15:30
Avatar
Ilja Židkov
Člen
Avatar
Ilja Židkov:7.3.2019 9:21

Peter Mlich

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.

 
Nahoru Odpovědět
7.3.2019 9:21
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.