JavaScript: il design pattern basato su prototype

Sicuramente il design pattern basato sull'oggetto prototype è quello che meglio si adatta alla natura di JavaScript. 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:


const vehiclePrototype = {

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

    getModel() {
        console.log('The model of this vehicle is ' + this.model);
    }
};


function Vehicle(model) {

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

    const 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:


const car = Vehicle('Ferrari');
car.getModel();​
Torna su