Namespace in JavaScript
JavaScript non ha il concetto di namespace ma è possibile simularlo tramite gli oggetti in questo modo:
creo un oggetto sgart che se già esiste, ad esempio perché l'avevo già dichiarato in un altro file, mi ritorna se stesso oppure un oggetto vuoto se non esisteva. Il namespace lo aggiungo all'oggetto window in modo che sia globale.
Al namespace posso aggiungere delle proprietà e delle funzioni:
Con la stessa tecnica, avendo un namespace, posso aggiungere, al suo interno, altri namespace:
ed aggiungere variabile e funzioni:
JavaScript
window.sgart = window.sgart || {};
28/03/2014 Attenzione, questo modo di dichiarare i namespace non è compatibile con Internet Explorer 8 e precedenti e con alcune vecchie versioni di Firefox. L'incompatibilità è dovuta al fatto che le variabili globali non coincidono con le proprietà dell'oggetto window. In questi browser la variabile globale sgart è diversa da window.sgart
Quindi il modo corretto di dichiarare un namespace è il seguente:JavaScript
var sgart = sgart || {};
JavaScript
sgart.contatore=10;
sgart.showContatore = function(){
alert(sgart.contatore);
};
Ricordati di aggiungere sempre il punto e virgola dopo la graffa della funzione
la funzione la posso richiamare con:JavaScript
sgart.showContatore();
Con la stessa tecnica, avendo un namespace, posso aggiungere, al suo interno, altri namespace:
JavaScript
sgart.utility = sgart.utility || {};
JavaScript
sgart.utility.showMessage = function(msg){
alert(msg);
};
sgart.utility.showMessage("ciao");