JavaScript non dispone ancora dei metodi __construct()
e __destruct()
propri di PHP o almeno di metodi analoghi. Tuttavia possiamo implementare il pattern costruttore/distruttore degli oggetti
con relativa semplicità.
Possiamo implementare la seguente soluzione:
var Obj = function() {
this.construct = function() {
this.test = 1;
this.prop = true;
};
this.destruct = function() {
var self = this;
var key;
for(key in self) {
if(self.hasOwnProperty(key)) {
delete(self[key]);
}
}
};
this.construct();
};
Il metodo contruct()
viene invocato quando si crea un'istanza dell'oggetto e va ad inizializzare le sue due proprietà. Al contrario il metodo destruct()
rimuove completamente le proprietà
dall'oggetto utilizzando l'operatore delete
:
var obj = new Obj();
console.log(obj.test + ' ' + obj.prop); // 1 true
obj.destruct();
console.log(obj.test + ' ' + obj.prop); // undefined undefined
Questo pattern è utile per creare oggetti temporanei le cui proprietà non devono avere valori statici durante l'esecuzione del codice.