Autor | Zpráva | ||
---|---|---|---|
icefireCZ Profil |
#1 · Zasláno: 29. 7. 2017, 00:48:53
Dobrý den,
prosím mohli byste mi vysvětlit co znamená to "prototype" v následujícím kódu? function Graph(){ this.signs = []; this.eq = {}; } Graph.prototype.addSign = function(n){ this.signs.push(n); } |
||
Keeehi Profil |
#2 · Zasláno: 29. 7. 2017, 09:40:38
Je to způsob, jak později měnit danou třídu. Přidat jí atributy a tak. Dá se to buď napsat takto, nebo ekvivalentní zápis by byl:
function Graph(){ this.signs = []; this.eq = {}; this.addSign = function(n){ this.signs.push(n); } } |
||
Dan Charousek Profil |
#3 · Zasláno: 30. 7. 2017, 19:23:51
Keeehi:
„Dá se to buď napsat takto, nebo ekvivalentní zápis by byl:“ Určitě ne, je v tom zásadní rozdíl. Viz. Živá ukázka Tímto způsobem lze nadefinovat metodu pro třídu Graph. Je to poněkud vágní vysvětlení, protože OOP v javascriptu není třídní, nýbrž prototypové. Zásadní rozdíl oproti Keeehiho verzi je v tom, že metody/funkce které obsahuje prototyp dané třídy/funkce jsou sdílené všem instancím, tudíž jestliže změním danou metodu, ovlivním tím její užití i v ostatních instancích. Z toho je patrné, že dané funkce existuje vlastně jedna. Pakliže metodu nadefinuji způsobem, uvedneým v [#2] při vytvoření nové instance se metoda jakoby zkopíruje a je pro instanci unikátní, tudíž změna prototypu neovlivní její fungování v existujících instancích. Tento přístup je paměťově náročnější, protože s každou instancí se musí metoda tvořit znovu. |
||
icefireCZ Profil |
#4 · Zasláno: 1. 8. 2017, 18:35:48
Dan Charousek:
Velmi zajímavé :) Děkuji :) |
||
Časová prodleva: 7 let
|
0