La mise en œuvre du polymorphisme peut adopter des méthodes similaires à l'héritage. Tout d'abord, définissez une classe abstraite, dans laquelle certaines méthodes virtuelles sont appelées. Les méthodes virtuelles ne sont pas définies dans la classe abstraite, mais sont implémentées via sa classe d'implémentation concrète.
Comme dans l'exemple suivant:
Object.Extend = function (destination, source) {for (propriété dans source) {destination [propriété] = source [propriété]; } return destination; } // Définir une base de classe de base abstraite sans base de fonction de constructeur () {}; base.prototype = {initialize: function () {this.oninit (); // une méthode virtuelle a été appelée}} fonction subclassa () {// constructeur} subclassa.prototype = object.extend ({propinsubclassa: "propinsubclassa", onInit: function () {allert (this.propinsubclassa);} }, base.prototype); fonction subsassb () {// constructor} subsassb.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 (); // output "propinsubClassB"Tout d'abord, une base de classe de base abstraite est définie. La méthode ONInit est appelée dans la méthode Initialize de la classe de base, mais la classe de base n'utilise pas l'implémentation ou la déclaration de la méthode ONInit. Les classes de sous-classes et de sous-classes héritent des classes de base et implémentent la méthode ONInit de différentes manières.