A implementação do polimorfismo pode adotar métodos semelhantes aos da herança. Primeiro, defina uma classe abstrata, na qual alguns métodos virtuais são chamados. Os métodos virtuais não são definidos na classe abstrata, mas são implementados por meio de sua classe de implementação concreta.
Como no exemplo seguinte:
Object.extend = function (destino, origem) {for (propriedade na origem) {destino [propriedade] = fonte [propriedade]; } retornar destino; } // Defina uma base de base base abstrata sem base de função de construtor () {}; base.prototype = {Initialize: function () {this.oninit (); // Um método virtual foi chamado}} função Subclassa () {// construtor} subclassa.prototype =)) ({propInSubclassa: propInsubclassa ", oninit: funct. ({propInsubclassa:" propiSubclassa "; }, base.prototype); function subclassb () {// construtor} subclassb.prototype = object.extend ({propinsubclassb: "propinsubclassb", oninit: function () {alert (this.propinsubclassb);}}, base.prototype); var obja = new Subclassa (); obja.initialize (); // saída "propinsubclassa" var objb = new Subclassb (); objb.initialize (); // saída "propinsubclassb"Primeiro, uma base de classe base abstrata é definida. O método Oninit é chamado no método inicialize da classe base, mas a classe base não usa a implementação ou declaração do método Oninit. As classes Subclassa e Subclassb herdam das classes base e implementam o método Oninit de diferentes maneiras.