Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: PsychoIT 31. 01. 2015, 00:17:12
-
Tak jsem se trochu začal dívat na ten JavaScript, který jsem doposud považoval za odpadní to jazyk, už kvůli typové konverzi, netypovosti a jiným věcem, který se ujal na úplně jiné účely než na které byl původně určen, ale ono to snad dnes patří k základnímu programátorskému vzdělání.
Narazil jsem na zajímavý konstrukt v jednom example:
({
another_method: function() { }
})
// neni strednik!
var obj = {
_prop: null,
get prop() { return this._prop; },
set prop(val) { this._prop = val;}
};
Co to proboha je, a proč se něco vůbec v JavaScriptu uzavírá do ({ }), když v referenci grouping operatoru na MDN není o ničem takovém ani zmínka, na co se ten grouping operátor zneužívá?
Prostě sračka ten JavaScript! A ani nemá třídy, interfejsy a dědičnost, lol...
-
triedy a dedicnost su rakovina it
-
Odkud je ten příklad?
Pro uklidnění doporučuji ES6, který už třídy a mnoho jiných vychytávek má.
Jinak "starý" JS dědičnost má, jen ne se třídami, ale prototypovou. To jen tak pro úplnost.
-
Prvni cast vysvetlit neumim. Co se tyka stredniku, tak ty se snazi si intepret doplnovat automaticky a to dosti nestastne. Doporucuji explicitne uvadet a dusledne pouzivat slozene zavorky pro ohraniceni bloku, ikdyz zrovna nejsou potreba.
Druha konstrukce vytvori objekt jenz ma atribut prop, pro ktery definuje getter (jak ziskat hodnotu) a setter (funkce rikajici jak nastavit hodnotu). Hodnota tohoto atributu je ulozena interne v _prop jenz je pri vytvoreni inicializovan hodnotou null. Tedy pri naslednem pouziti
var x = obj.prop; // x bude null
obj.prop = 42; // Answer to The Ultimate Question of Life, the Universe, and Everything
var y = obj.prop; // y bude 42
-
Možná je to namespace.
triedy a dedicnost su rakovina it
Třídy a dědičnost se rozšířily v IT mezi lety 1980-1990 a přinesly do IT nebývalý pořádek. Výroky o rakovině mohou pronést pouze později narození jedinci kteří nezažili bordel který panoval předtím a kam samozřejmě JS nevyhnutelně spěje, pokud už tam není.
-
Je super, jak se tady všichni pořád jenom domnívají :-D
V JS se jmenné prostory používají naprosto běžně, typicky v podobě hashe v uzávěru. Dědičnost jak už bylo zmíněno je prototypová - doporučuji řádně nastudovat, vyhnete se spoustě konstatování "proč se to kurva chová zrovna takhle, to je ale sračka ten JS". V CS nebo ES6 "třídy" jsou "by design" a mimochodem dá se poměrně jednoduše implementovat třeba i vícenásobná dědičnost.
Při překladu se aplikuje ASI(automatic semicolon insertion), tím se ale nenechte vyvést z míry a středníky pište všude. Například v minifikovaných skriptech to může úplně změnit význam kódu.
První konstrukt je nesmyslný(aspoň v uvedené podobě). Druhý už byl popsán, je to dalo by se říct zkratka pro Object.defineProperty().
-
Bylo to opravdu takhle? Nebylo to spíš
some_method
({
another_method: function() { }
})
Tedy volání funkce s objektem jako parametrem? Tedy zkratka tohohle?
var obj = {
another_method: function() { }
};
some_method(obj);