JavaScript: inizializzazione automatica degli oggetti basati su costruttori

JavaScript: inizializzazione automatica degli oggetti basati su costruttori

Il tipo di oggetti più usato in assoluto in JavaScript è quello che si ottiene usando come costruttore una funzione. Questo tipo di pattern presenta alcuni vantaggi. Innanzitutto è molto più semplice gestire la visibilità dei suoi membri usando le variabili o la parola chiave this. Un altro aspetto da considerare è l'inizializzazione ed esecuzione del codice all'interno di questi oggetti. Dato che si tratta di funzioni (le funzioni, ricordiamolo, sono first-class citizen) possiamo usare il loro valore di ritorno per eseguire il codice dei loro metodi usando un'unica chiamata ad un metodo di inizializzazione. Vediamo come.

Abbiamo questo oggetto:


function A() {

	var priv = 'Test';
	
	this.init = function() {
	
		alert(priv);
	
	};
}

Normalmente dovremmo prima istanziare l'oggetto e quindi usare il suo metodo:


var a = new A();
a.init(); // 'Test'

Esiste un modo molto semplice per automatizzare questo processo: usare return. In fondo l'oggetto è pur sempre una funzione, quindi il seguente codice:


function A() {

	var priv = 'Test';
	
	this.init = function() {
	
		alert(priv);
	
	};

	return this.init();
}

usato con la sola instanziazione:


var a = new A(); // 'Test'

produrrà il risultato voluto. Dato che si tratta sempre di una funzione, è anche possibile scrivere:


var a = A();  // 'Test'

per ottenere lo stesso risultato, ossia l'esecuzione del metodo principale dell'oggetto.

Torna su