Riprendiamo l'esempio utilizzato per l'ereditarietà:
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"); } // Il metodo Disegna() definito dalle classi FiguraGeometrica, Cerchio e Rettangolo è polimorfico. // Come si vede nell'esempio seguente viene, infatti, invocato il metodo Disegna appartenente alla classe opportuna: var figura = new FiguraGeometrica(); var circle = new Cerchio( 8 ); var rectangle = new Rettangolo(2, 9); figura.Disegna(); // Output: Metodo Disegna della classe FiguraGeometrica circle.Disegna(); // Output: Metodo Disegna della classe Cerchio rectangle.Disegna(); // Output: Metodo Disegna della classe Rettangolo