La implementación del polimorfismo puede adoptar métodos similares a la herencia. Primero, defina una clase abstracta, en la que se llaman algunos métodos virtuales. Los métodos virtuales no se definen en la clase abstracta, sino que se implementan a través de su clase de implementación concreta.
Como en el siguiente ejemplo:
Objeto.extend = function (destino, fuente) {for (propiedad en fuente) {destino [propiedad] = fuente [propiedad]; } Destino de retorno; } // Defina una base de clase de base abstracta sin función de la función de constructor () {}; base.prototype = {inicialize: function () {this.oninit (); // Se llamó un método virtual}} functSassa () {// constructor} subclassa.prototype = object.extend ({propinSubClassa: "propinSubclassa", onInit: function () {alerta (this.propinsubclasa; }, base.prototype); function subclassb () {// constructor} subclassb.prototype = object.extend ({propinsubclassb: "propinsubclassb", onInit: function () {alert (this.propinsubclassb);}}, base.prototype); var obja = new Subclassa (); obja.initialize (); // output "propinSubclassa" var objB = new SubclassB (); objb.initialize (); // salida "propinsubClassb"Primero, se define una base de clase de base abstracta. El método OnInit se llama en el método de inicializar de la clase base, pero la clase base no utiliza la implementación o declaración del método ONInit. Las clases de subclassa y subclassb heredan de las clases base e implementan el método ONINIT de diferentes maneras.