Il linguaggio Javascript supporta il concetto di ereditarietà attraverso l'uso dei prototipi (objects prototypes). Un prototipo rappresenta una sorta di template in cui vengono definiti un insieme di proprietà e metodi che si desidera vengano condivise da tutte le istanze di un determinato tipo di oggetto. Ogni tipo di oggetto, in Javascript, ha una proprietà prototype che è possibile estendere o ereditare.
Nell'esempio seguente viene utilizzato un object prototype FiguraGeometrica che definisce due metodi ( GetArea() e Disegna() ) facenti capo, rispettivamente, ai metodi FiguraGeometrica_GetArea() e FiguraGeometrica_Disegna(). Gli object prototype Cerchio e Rettangolo (aventi il rispettivo prototype definito come una istanza di FiguraGeometrica) erediteranno tali metodi effettuando, però, l'override del metodo Disegna(),ridefinito in maniera opportuna per ciascun oggetto:
FiguraGeometrica.prototype.GetArea = FiguraGeometrica_GetArea; FiguraGeometrica.prototype.Disegna = FiguraGeometrica_Disegna; function FiguraGeometrica () { } function FiguraGeometrica_GetArea() { return this.area; } function FiguraGeometrica_Disegna() { alert( "Metodo Disegna della classe FiguraGeometrica" ); } Cerchio.prototype = new FiguraGeometrica(); Cerchio.prototype.constructor = Cerchio; Cerchio.prototype.baseClass = FiguraGeometrica.prototype.constructor; Cerchio.prototype.Disegna = Cerchio_Disegna; function Cerchio(r) { this.area = Math.PI * r * r; } function Cerchio_Disegna() { alert("Metodo Disegna della classe Cerchio"); } Rettangolo.prototype = new FiguraGeometrica(); Rettangolo.prototype.constructor = Rettangolo; Rettangolo.prototype.baseClass = FiguraGeometrica.prototype.constructor; Rettangolo.prototype.Disegna = Rettangolo_Disegna; function Rettangolo(x, y) { this.area = x * y; } function Rettangolo_Disegna() { alert("Metodo Disegna della classe Rettangolo"); } // Vengono quindi costruiti due oggetti, rispettivamente // di classe Cerchio e Rettangolo ed invocati i metodi "overridati" // Disegna oltre al metodo GetArea, definito nella classe padre var circle = new Cerchio( 5 ); var rectangle = new Rettangolo(10, 20); alert( "Classe padre della classe Cerchio = " + circle.baseClass); alert( "Area del Cerchio = " + circle.GetArea() ); circle.Disegna(); alert( "Classe padre della classe Rettangolo = " + rectangle.baseClass); alert( "Area del Rettangolo = " + rectangle.GetArea() ); rectangle.Disegna();