dagblog.
← Archiv

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"));
vracelo false a alert("dagblog".startsWith("dag"));
true. Jinak řečeno, všechny řetězce by měly metodu startsWith, 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í vlastnosti prototype př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 objektu Object. Zároveň ukazuje způsob zapouzdření(zakrytí)
proměnných objektu.

Verze na Medium

Související články

Související epizody CZ Podcastu