Implementasi polimorfisme dapat mengadopsi metode yang sama sebagai warisan. Pertama, tentukan kelas abstrak, di mana beberapa metode virtual disebut. Metode virtual tidak didefinisikan dalam kelas abstrak, tetapi diimplementasikan melalui kelas implementasi konkretnya.
Seperti dalam contoh berikut:
Object.extend = function (tujuan, sumber) {for (properti di sumber) {tujuan [properti] = sumber [properti]; } pengembalian tujuan; } // Tentukan basis kelas dasar abstrak tanpa basis fungsi konstruktor () {}; base.prototype = {initialize: function () {this.onInit (); // metode virtual disebut}} function subclassa () {// constructor} subclassa.prototype = object.extend ({{propinsubclassa: "propinsubclassa", oninit: function () {) {) {) {) {) {{) {) {) {) {) {) {) {{{) {{) {{) {{) {) }, base.prototype); fungsi subclassb () {// konstruktor} subclassb.prototype = object.extend ({propinsubclassb: "propinsubclassb", onInit: function () {alert (this.propinsubclassb);}}, base.prototype); var obja = subclassa baru (); obja.initialize (); // output "propinsubclassa" var objb = subclassB baru (); objb.initialize (); // output "propinsubclassb"Pertama, basis kelas dasar abstrak didefinisikan. Metode OnInit dipanggil dalam metode inisialisasi kelas dasar, tetapi kelas dasar tidak menggunakan implementasi atau deklarasi metode OnInit. Kelas subclassa dan subclassb mewarisi dari kelas dasar dan mengimplementasikan metode OnInit dengan cara yang berbeda.