Programovanie | Fórum

yaroukh
12.4.2005 10:23
Pridať do obľúbených
JavaScript prototype (extend-pitfall)
zdrc Dedil jste nekdo v JavaScriptu? How to extend co nejelegantneji? A) AncestorFc.prototype = new BaseFc(); -- Tohle ma nevyhodu, pokud BaseFc() ocekava nejake parametry: problem nastane v okamzik, kdy s temi vstupnimi hodnotami chce BaseFc() manipulovat. B) AncestorFc.prototype = BaseFc.prototype; -- Vyse zminena nevyhoda odpada. Ale je tu jina: predava se reference na prototype, takze override fce v potomkovi ve skutecnosti zmeni fci uz v zakladni "tride". Napadaji me dve reseni: 1) osetrit konstruktor vsech zakladnich trid, aby pocital s moznosti chybejicich parametru 2) napsat nejakou fci extend(BaseFc.prototype), ktera pomoci for(field in BaseFc.prototype) vsechny cleny/fce do nove tridy z te puvodni nakopiruje Oboji je "takovy divny", a treba nekdo zna elegeantnejsi reseni ... ? bye
0 príspevkov
yaroukh
25.11.2017 13:55 | |
+0 -0
Reagovať
zdrc Dedil jste nekdo v JavaScriptu? How to extend co nejelegantneji? A) AncestorFc.prototype = new BaseFc(); -- Tohle ma nevyhodu, pokud BaseFc() ocekava nejake parametry: problem nastane v okamzik, kdy s temi vstupnimi hodnotami chce BaseFc() manipulovat. B) AncestorFc.prototype = BaseFc.prototype; -- Vyse zminena nevyhoda odpada. Ale je tu jina: predava se reference na prototype, takze override fce v potomkovi ve skutecnosti zmeni fci uz v zakladni "tride". Napadaji me dve reseni: 1) osetrit konstruktor vsech zakladnich trid, aby pocital s moznosti chybejicich parametru 2) napsat nejakou fci extend(BaseFc.prototype), ktera pomoci for(field in BaseFc.prototype) vsechny cleny/fce do nove tridy z te puvodni nakopiruje Oboji je "takovy divny", a treba nekdo zna elegeantnejsi reseni ... ? bye