JavaScriptové perličky VIII.

Občas by v JavaScriptu byla zapotřebí dědičnost, tj. aby nějaká třída měl už "od narození" definované vlastnosti své nadtřídy. Jak se to v dělá? Trochu neobvykle, ale zato jednoduše – pomocí prototypů:

function MaterskaTrida() {} // konstruktor
MaterskaTrida.prototype.x = 5;
MaterskaTrida.prototype.y = 10;

function OdvozenaTrida() {} // konstruktor
OdvozenaTrida.prototype = MaterskaTrida.clone(); // metoda clone viz předchozí perličky
MaterskaTrida.prototype.y = 15;
OdvozenaTrida.prototype.z = 20;

m = new MaterskaTrida();
document.write(m.x); // 5
document.write(m.y); // 10
document.write(m.z); // undefined

o = new OdvozenaTrida();
document.write(o.x); // 5
document.write(o.y); // 15
document.write(o.z); // 20

Jak je vidět, při definici prototypu odvozené třídy vezmeme za základ prototyp třídy mateřské a přidáme vlastnosti, které v něm chceme mít navíc. Jak prosté.