Postřehy ohledně architektury JavaScriptu

balki

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #75 kdy: 25. 08. 2016, 10:52:41 »
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.

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.
Nejen !!! Nic se sakra neklonuje, jenom se to frkne do prototypu novýho objektu. Ty data sou kurva sdílený, používat todle na klonování je ve stylu javamana...

Co poviete na taku feature javy, co sa vola "prototype chain"?  To akoze nic, nula bodov?


čumil

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #76 kdy: 25. 08. 2016, 10:53:30 »
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.

Tohle objekt neklonuje. Pouze to vytvoří nový objekt s prototypem o.

a?
To cos postnul je polyfill na object.create, hovno klonování ...

Zaujimave veci sa dozviem, povedzte mi kefalin, co je potom rozumiete pod takym slovom "klonovanie" v prototype based programming?
Alespoň deep copy, nejlíp přenést i prototypy sub objektů (be kopírování, chci aby fungovalo instaceof). Cyklicity by měli být korektně zkopírovány také.

balki

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #77 kdy: 25. 08. 2016, 10:54:42 »
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.

Tohle objekt neklonuje. Pouze to vytvoří nový objekt s prototypem o.

a?
To cos postnul je polyfill na object.create, hovno klonování ...

Zaujimave veci sa dozviem, povedzte mi kefalin, co je potom rozumiete pod takym slovom "klonovanie" v prototype based programming?
Alespoň deep copy, nejlíp přenést i prototypy sub objektů (be kopírování, chci aby fungovalo instaceof). Cyklicity by měli být korektně zkopírovány také.

Deep copy je komplexny problem. To nemoze vediet uz z podtaty veci jazyk sam dobre robit.

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #78 kdy: 25. 08. 2016, 10:56:16 »
Assign nedělá ani deep copy idiote :D
Díky, že jste projevil své IQ tykve.
A potrefená husa zakejhala. Já nic o deep copy nepsal, jen jsem reagoval na nesmysl o neexistenci built-in methody na klonování objektů.

čumil

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #79 kdy: 25. 08. 2016, 10:58:07 »
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.

Tohle objekt neklonuje. Pouze to vytvoří nový objekt s prototypem o.

a?
To cos postnul je polyfill na object.create, hovno klonování ...

Zaujimave veci sa dozviem, povedzte mi kefalin, co je potom rozumiete pod takym slovom "klonovanie" v prototype based programming?
Alespoň deep copy, nejlíp přenést i prototypy sub objektů (be kopírování, chci aby fungovalo instaceof). Cyklicity by měli být korektně zkopírovány také.

Deep copy je komplexny problem. To nemoze vediet uz z podtaty veci jazyk sam dobre robit.
Nežvaň mistře ...... A co strukturovaný klonovací mechanismus použitý na objekty které se posílají do workerů. Zvládne dokonce cyklicity (krom deep copy) ale už nepřenese prototypy.


gl

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #80 kdy: 25. 08. 2016, 10:59:16 »
Nejen !!! Nic se sakra neklonuje, jenom se to frkne do prototypu novýho objektu. Ty data sou kurva sdílený, používat todle na klonování je ve stylu javamana...

To nemusí vadit. Když změníš položku té kopie, tak se nepřepíše v prototypu. Pokud to není zanořená položka v podobjektu.

čumil

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #81 kdy: 25. 08. 2016, 11:00:24 »
Assign nedělá ani deep copy idiote :D
Díky, že jste projevil své IQ tykve.
A potrefená husa zakejhala. Já nic o deep copy nepsal, jen jsem reagoval na nesmysl o neexistenci built-in methody na klonování objektů.
Šikovnej klučík našel nativní shallow copy, tady máš cukřík :D

Superman

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #82 kdy: 25. 08. 2016, 11:00:44 »
To je marný. To se opravdu sešla parta. Vývojáři, co se zakopali X let zpátky a odmítají se pohnout z místa, jsou k ničemu. Zdůvodnění, že při konjunkci Jupitera se Saturnem může použití Babelu způsobovat problémy, je k smíchu. Když už teď máte problém držet krok s ostatními a ještě jste na svoje ignoranství hrdí, tak se na to radši vyserte.

balki

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #83 kdy: 25. 08. 2016, 11:02:54 »
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.

Tohle objekt neklonuje. Pouze to vytvoří nový objekt s prototypem o.

a?
To cos postnul je polyfill na object.create, hovno klonování ...

Zaujimave veci sa dozviem, povedzte mi kefalin, co je potom rozumiete pod takym slovom "klonovanie" v prototype based programming?
Alespoň deep copy, nejlíp přenést i prototypy sub objektů (be kopírování, chci aby fungovalo instaceof). Cyklicity by měli být korektně zkopírovány také.

Deep copy je komplexny problem. To nemoze vediet uz z podtaty veci jazyk sam dobre robit.
Nežvaň mistře ...... A co strukturovaný klonovací mechanismus použitý na objekty které se posílají do workerů. Zvládne dokonce cyklicity (krom deep copy) ale už nepřenese prototypy.

No je to pekne, len zle urobena "deep copy" moze sklonovat celu aplikaciu. Otazka, co je potom deep copy, a co nie je deep copy? Kto to ma rozhodnut? V jazyku to preto nie je, lebo sa nechcu srat s blbostami, ktore si ma osetrit pouzivatel jazyka.

SB

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #84 kdy: 25. 08. 2016, 11:03:04 »
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.

Kdo psal, že je všechno špatně?
Objekt je v Go onen nezapouzdřený struct?
Je klonování klíčovou funkcionalitou objektového systému?
Řeší Object.assign nastavení správného prototypu?

Rádi se necháme poučit (tj. comment).

čumil

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #85 kdy: 25. 08. 2016, 11:03:23 »
Nejen !!! Nic se sakra neklonuje, jenom se to frkne do prototypu novýho objektu. Ty data sou kurva sdílený, používat todle na klonování je ve stylu javamana...

To nemusí vadit. Když změníš položku té kopie, tak se nepřepíše v prototypu. Pokud to není zanořená položka v podobjektu.
Good point

Namátkou jen by mě zajímalo jestli to vošéfuje cyklicity korektně.

A co se mi nelíbý, přidává to další level do chainu.

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #86 kdy: 25. 08. 2016, 11:07:39 »
Assign nedělá ani deep copy idiote :D
Díky, že jste projevil své IQ tykve.
A potrefená husa zakejhala. Já nic o deep copy nepsal, jen jsem reagoval na nesmysl o neexistenci built-in methody na klonování objektů.
Šikovnej klučík našel nativní shallow copy, tady máš cukřík :D
Krom toho, že to v mnoha případech (nebál bych se napsat ve většině) postačuje, tak se netvářím jako expert a poté co jsem přichycen to maskuji. Deep copy je součástí mnoha knihoven (ať už komplexních, tak takových, kde je pouze tato jedna funkce). Většinu toho, co jste tady za dnešek "nablil" jsou polopravdy (nesmysly a domněnky), čili lži. Nakonec toto je váš styl, pamatuji si vás i z jiných vláken.

čumil

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #87 kdy: 25. 08. 2016, 11:08:35 »
Nejen !!! Nic se sakra neklonuje, jenom se to frkne do prototypu novýho objektu. Ty data sou kurva sdílený, používat todle na klonování je ve stylu javamana...

To nemusí vadit. Když změníš položku té kopie, tak se nepřepíše v prototypu. Pokud to není zanořená položka v podobjektu.
Jejda, má to problém, pokud v mateřském objektu se změní slot x, zmení se i v klonu pokud slot x do te doby neprepsal, což není garantováno.

čumil

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #88 kdy: 25. 08. 2016, 11:10:00 »
Assign nedělá ani deep copy idiote :D
Díky, že jste projevil své IQ tykve.
A potrefená husa zakejhala. Já nic o deep copy nepsal, jen jsem reagoval na nesmysl o neexistenci built-in methody na klonování objektů.
Šikovnej klučík našel nativní shallow copy, tady máš cukřík :D
Krom toho, že to v mnoha případech (nebál bych se napsat ve většině) postačuje, tak se netvářím jako expert a poté co jsem přichycen to maskuji. Deep copy je součástí mnoha knihoven (ať už komplexních, tak takových, kde je pouze tato jedna funkce). Většinu toho, co jste tady za dnešek "nablil" jsou polopravdy (nesmysly a domněnky), čili lži. Nakonec toto je váš styl, pamatuji si vás i z jiných vláken.
No jo, jasně, diký, tak už zalez...

gl

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #89 kdy: 25. 08. 2016, 11:10:33 »
Nejen !!! Nic se sakra neklonuje, jenom se to frkne do prototypu novýho objektu. Ty data sou kurva sdílený, používat todle na klonování je ve stylu javamana...

To nemusí vadit. Když změníš položku té kopie, tak se nepřepíše v prototypu. Pokud to není zanořená položka v podobjektu.
Good point

Namátkou jen by mě zajímalo jestli to vošéfuje cyklicity korektně.

A co se mi nelíbý, přidává to další level do chainu.

Tam se nemá co zacyklit. Žádná rekurze tam neprobíhá.