Citace: Superman 24. 08. 2016, 21:42:36Čumile, slyšel jsi už někdy třeba o Babelu? Ty kecy o shitech u tříd, které jsou přitom jenom trochu přehledněji zapsaným kódem, jsou taky dost mimo.... babel je limitovanej. Pokud featura potřebuje úpravu v enginu, je na to krátkej.
Čumile, slyšel jsi už někdy třeba o Babelu? Ty kecy o shitech u tříd, které jsou přitom jenom trochu přehledněji zapsaným kódem, jsou taky dost mimo.
...a ten class shit je snaha vyjít vstříct ignorantům.
...Mnohem diskutabilnější mně přijdou properties. Jejich používání může kód znepřehlednit.
Co mě ale sere je absence nějaké built-in metody na klonování objektů. Neexistuje a nikdo ji asi ani v příštím století nepřidá. Takhle si musí člověk napsat vlastní, ale protože je v JS, tak je to samozřejmě pomalejší než kdyby to bylo nativní.
To se tu zase sešla "parta". Všechno je špatně, go je neobjektové (po 10 minutách studia), žádné knihovny neumožní klonovat objekty, experti na ES6 a přitom neznají ani Object.assign. No comment.
V mojej oblubenej knizke "Douglas Croockford - Javascript:The good parts" autor vytvoril klonovaciu metodu monkey patchingom objektu "Object".Kód: [Vybrat]if (typeof Object.create !== 'function') { Object.create = function (o) { var F = function () {}; F.prototype = o; return new F(); };}Klonuje sa potom takto:Kód: [Vybrat]var another_stooge = Object.create(stooge);Mne to vzdy fungovalo, je nejaky dovod, preco to nepouzivat?Pytam sa, lebo tu su sami experti a ja som len vysokoskolsky vzdelana lopata v odbore softverove inzinierstvo s praxou.
if (typeof Object.create !== 'function') { Object.create = function (o) { var F = function () {}; F.prototype = o; return new F(); };}
var another_stooge = Object.create(stooge);
Citace: čumil 24. 08. 2016, 22:36:41Co mě ale sere je absence nějaké built-in metody na klonování objektů. Neexistuje a nikdo ji asi ani v příštím století nepřidá. Takhle si musí člověk napsat vlastní, ale protože je v JS, tak je to samozřejmě pomalejší než kdyby to bylo nativní.To je docela problém. Ale horší věc, co mě sere, je, že odstranili elegantní __noSuchMethod__ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/noSuchMethod a nahradili to jakýmsi komplikovaným Proxy. Nechápu.
Citace: balki 25. 08. 2016, 09:03:04V mojej oblubenej knizke "Douglas Croockford - Javascript:The good parts" autor vytvoril klonovaciu metodu monkey patchingom objektu "Object".Kód: [Vybrat]if (typeof Object.create !== 'function') { Object.create = function (o) { var F = function () {}; F.prototype = o; return new F(); };}Klonuje sa potom takto:Kód: [Vybrat]var another_stooge = Object.create(stooge);Mne to vzdy fungovalo, je nejaky dovod, preco to nepouzivat?Pytam sa, lebo tu su sami experti a ja som len vysokoskolsky vzdelana lopata v odbore softverove inzinierstvo s praxou.Tohle objekt neklonuje. Pouze to vytvoří nový objekt s prototypem o.
Citace: čumil 25. 08. 2016, 01:53:35A nenapadá tě, že pokud je to záměr, tak je kurva debilní ? Zvlášť v prototype based OOP kde se nové objekty standardně tvoří právě skrz klonování.Zaprvé, objekty se AFAIK většinou vytváří konstruktorem. Zadruhé, jQuery.extend má volbu pro deep copy. Lodash má deepClone. Všechny kopírovací funkce, se kterými jsem se setkal, přenáší prototyp. Cyklické reference ty funkce kontrolují.
A nenapadá tě, že pokud je to záměr, tak je kurva debilní ? Zvlášť v prototype based OOP kde se nové objekty standardně tvoří právě skrz klonování.
Citace: gl 24. 08. 2016, 22:43:38Taková funkce je v každé utility knihovně. Nepoužíváš underscore, lodash nebo jQuery?V 90% případů ty knihovní funkce nejsou schopny ani udělat deep copy. Přenos prototypů je z říše pohádek, o cyklickejch referencích ani nemluvím.Nehledě na to že to furt neřeší problém. Není to nativní == je to pomalí.
Taková funkce je v každé utility knihovně. Nepoužíváš underscore, lodash nebo jQuery?
Citace: gl 25. 08. 2016, 10:34:03Citace: balki 25. 08. 2016, 09:03:04V mojej oblubenej knizke "Douglas Croockford - Javascript:The good parts" autor vytvoril klonovaciu metodu monkey patchingom objektu "Object".Kód: [Vybrat]if (typeof Object.create !== 'function') { Object.create = function (o) { var F = function () {}; F.prototype = o; return new F(); };}Klonuje sa potom takto:Kód: [Vybrat]var another_stooge = Object.create(stooge);Mne to vzdy fungovalo, je nejaky dovod, preco to nepouzivat?Pytam sa, lebo tu su sami experti a ja som len vysokoskolsky vzdelana lopata v odbore softverove inzinierstvo s praxou.Tohle objekt neklonuje. Pouze to vytvoří nový objekt s prototypem o.a?
Citace: SB 25. 08. 2016, 09:34:57Citace: gl 24. 08. 2016, 21:06:25ES6 třídy jsou jen cukr nad prototypy. Narozdíl od čumila si nemyslím, že je to shit, ale není to nic převratného. To co se píše v Good Parts stále platí.Přehled podporovaných featur v jednotlivých verzích je zde:http://node.green/Osobně si myslím, že předstírat, že Javascript je třídně-instanční, není dobře, je prostě prototypový, tak by se neměly v jazyku takovéto excesy objevovat. Jazyk má být minimalistický - narážím na Lisp či Smalltalk a jejich protipólů C# a Javu, proto mě tyto tendence v Javascriptu netěší.Dovolil bych si připomenout citáty 2 velikánů:„Dokonalosti není dosaženo tehdy, když už není co přidat, ale tehdy, když už nemůžete nic odebrat."„Jednoduchost je nejvyšší sofistikovanost."Squeak image ma 7 mb, pharo ma 18 mb. Kosate java api bolo prave inspirovane smalltalkom.
Citace: gl 24. 08. 2016, 21:06:25ES6 třídy jsou jen cukr nad prototypy. Narozdíl od čumila si nemyslím, že je to shit, ale není to nic převratného. To co se píše v Good Parts stále platí.Přehled podporovaných featur v jednotlivých verzích je zde:http://node.green/Osobně si myslím, že předstírat, že Javascript je třídně-instanční, není dobře, je prostě prototypový, tak by se neměly v jazyku takovéto excesy objevovat. Jazyk má být minimalistický - narážím na Lisp či Smalltalk a jejich protipólů C# a Javu, proto mě tyto tendence v Javascriptu netěší.Dovolil bych si připomenout citáty 2 velikánů:„Dokonalosti není dosaženo tehdy, když už není co přidat, ale tehdy, když už nemůžete nic odebrat."„Jednoduchost je nejvyšší sofistikovanost."
ES6 třídy jsou jen cukr nad prototypy. Narozdíl od čumila si nemyslím, že je to shit, ale není to nic převratného. To co se píše v Good Parts stále platí.Přehled podporovaných featur v jednotlivých verzích je zde:http://node.green/
Citace: balki 25. 08. 2016, 10:40:10Citace: gl 25. 08. 2016, 10:34:03Citace: balki 25. 08. 2016, 09:03:04V mojej oblubenej knizke "Douglas Croockford - Javascript:The good parts" autor vytvoril klonovaciu metodu monkey patchingom objektu "Object".Kód: [Vybrat]if (typeof Object.create !== 'function') { Object.create = function (o) { var F = function () {}; F.prototype = o; return new F(); };}Klonuje sa potom takto:Kód: [Vybrat]var another_stooge = Object.create(stooge);Mne to vzdy fungovalo, je nejaky dovod, preco to nepouzivat?Pytam sa, lebo tu su sami experti a ja som len vysokoskolsky vzdelana lopata v odbore softverove inzinierstvo s praxou.Tohle objekt neklonuje. Pouze to vytvoří nový objekt s prototypem o.a?To cos postnul je polyfill na object.create, hovno klonování ...
Citace: balki 25. 08. 2016, 10:40:10Citace: gl 25. 08. 2016, 10:34:03Citace: balki 25. 08. 2016, 09:03:04V mojej oblubenej knizke "Douglas Croockford - Javascript:The good parts" autor vytvoril klonovaciu metodu monkey patchingom objektu "Object".Kód: [Vybrat]if (typeof Object.create !== 'function') { Object.create = function (o) { var F = function () {}; F.prototype = o; return new F(); };}Klonuje sa potom takto:Kód: [Vybrat]var another_stooge = Object.create(stooge);Mne to vzdy fungovalo, je nejaky dovod, preco to nepouzivat?Pytam sa, lebo tu su sami experti a ja som len vysokoskolsky vzdelana lopata v odbore softverove inzinierstvo s praxou.Tohle objekt neklonuje. Pouze to vytvoří nový objekt s prototypem o.a?V některých situacích to může stačit. Ale třeba hasOwnProperty nebude fungovat.