Snazší práce s objekty v JavaScriptu
JavaScript je objektově orientovaný programovací jazyk. Pro vyjádření vztahu
předek-potomek se využíva takzvaná prototypová dědičnost. Každý objekt je
vytvořen podle určitého kopyta(šablony), který se nazývá prototyp. Všechny
metody a vlastnosti získá instance daného objektu právě z onoho kopyta, právě z tohoto
důvodu se jedná o prototypovou dědičnost, objekty dědí od jejich prototypu.
Přiřazení vlastnosti(property) nebo metody provádíme přes vlastnost prototype
daného objektu. Pokud bychom chtěli objektu String přiřadit metodu, která by
například vracela pravdivostní hodnotu true|false podle toho jestli řetězec
začíná daným prefixem, zapsaly bychom to pomocí prototypové dědičnosti takto.
String.prototype.startsWith = startsWith;function startsWith(prefix){
len = prefix.length;
foo = this.substring(0,len);
return (foo == prefix);
}Při použití by pak voláníalert("dagblog".startsWith("xx"));
vracelofalseaalert("dagblog".startsWith("dag"));
true. Jinak řečeno, všechny řetězce by měly metodustartsWith, kterou
by dědily od jejich prototypu.
V případě, že bychom chtěli vyjádřit dědičnost mezi dvěma objekty, například objekt Auto a
objekt Škoda, museli bychom pomocí vlastnostiprototypepřiřadit objektu
Škoda všechny vlastnosti objektu Auto, které chceme zdědit.
Tolik moje krátká vsuvka do objektové implementace JavaScriptu. Nicholas C. Zakas v článku Rethinking JavaScript Objects
ukazuje mnohem pohodlnější způsob dědění ve vztahu předek-potomek a to přímo na úrovní
prapředka všech objektů tj. na objektuObject. Zároveň ukazuje způsob zapouzdření(zakrytí)
proměnných objektu.
Související články
Související epizody CZ Podcastu
- #217 · Ivo Lukačovič
O Windy, JavaScriptu a budování firem.
- #3 · Java 6 SE, Vývoj webových aplikací
Dagi a Filemon o novinkách v Javě 6 a webových frameworcích.