Il design pattern basato sull'oggetto prototype in JavaScript

Il design pattern basato sull'oggetto prototype in JavaScript

Sicuramente il design pattern basato sull'oggetto prototype è quello che meglio si adatta alla natura di JavaScript. Infatti in JavaaScript l'ereditarietà è gestita interamente da tale oggetto. Vediamo in dettaglio questo design pattern.

Per questo design pattern occorre separare l'oggetto prototype dall'oggetto JavaScript che lo userà. Tale oggetto utilizzerà prototype solo per l'inizializzazione dei suoi membri:


var vehiclePrototype = {

    init: function(carModel) {
        this.model = carModel;
    },

    getModel: function() {
        alert('The model of this vehicle is ' + this.model);
    }
};


function Vehicle(model) {

    function F() {};
    F.prototype = vehiclePrototype;

    var f = new F();

    f.init(model);
    return f;

}

L'oggetto Vehicle utilizza un oggetto vuoto (come suggerito da Douglas Crockford) e lo restituisce dopo averne impostato la proprietà prototype sull'oggetto vehiclePrototype. Il metodo init(), come suggerito dal nome, inizializza la proprietà model ereditata dall'oggetto prototype. Esempio:


var car = Vehicle('Ferrari');
car.getModel();​

Potete visionare l'esempio finale in questa pagina.

Torna su