Dem der har prøvet at arbejde med Prototype ved det formentlig allerede — nedarvning fungerer lidt klodset:
var Subklasse = Class.create(); Subklasse.prototype = Object.extend(Object.extend({}, Grundklasse.prototype), { initialize: function(value) { Grundklasse.prototype.initialize.call(this, value); ++this.value; } });
Faktisk er det ikke bare klodset, syntaksen er også så indviklet at der er alle mulige chancer for at komme til at gøre det forkert. Det er heldigvis faldet Justin Palmer for brystet. Og hvad bedre er, så har ingen mindre end Dean Edwards (som jeg først lærte at kende da han skrev et javascript bibliotek — IE7 — der rettede op på Internet Explorers CSS håndtering, og tilmed implementerede de dele af CSS2 og 3 som manglede) produceret en ganske kompetent løsning på problemet. Med Dean’s løsning vil ovenstående kunne opnås med:
var Subklasse = Grundklasse.extend({ constructor: function(value) { this.base(value); ++this.value; } });
Tilsammen har Justin og Dean nærmest gjort det umulige. Ikke bare har de “provokeret” Sam Stephenson (forfatter af Prototype) til at oprette en weblog, de har også fået ham til at sætte inkorporering af Dean’s løsning (kaldet Base) i Prototype på programmet til version 2.0 — som dog må forventes at være lidt fjern endnu, eftersom der stadig arbejdes på 1.5.