di: Christian Heilmann 27 Dicembre 2007
Si può accedere alle proprietà pubbliche e ai metodi che sono restituiti allo stesso modo in cui si fa con un letterale di oggetto, in questo caso myScript.public() e myScript.foo. C'è però un'altra cosa fastidiosa: se si vuole accedere ad un metodo pubblico da un altro o da un metodo privato, è necessario ricorrere nuovamente ai lunghi nomi (il nome dell'oggetto principale può in effetti diventare molto lungo). Per evitare tutto ciò basta definirli come metodi privati e restituire solo un oggetto con sinonimi:
var myScript = function(){
// these are all private methods and properties
var nav = document.getElementById('nav');
function init(){
// do stuff
}
function show(){
// do stuff
// do stuff
}
function reset(){
// do stuff
}
var foo = 'bar';
function public(){
}
// return public pointers to the private methods and
// properties you want to reveal
return {
public:public,
foo:foo
}
}();
Ciò consente di avere una certa consistenza nella scrittura del codice e permette anche di scrivere sinonimi più corti quando vengono rivelati.
Se non si vuole rivelare nessun metodo o nessuna proprietà al mondo esterno, si può avvolgere tutto il blocco di codice in una funzione anonima e richiamarla subito dopo che è stata definita:
(function(){
// these are all private methods and properties
var nav = document.getElementById('nav');
function init(){
// do stuff
show(); // no need for prepended object name
}
function show(){
// do stuff
}
function reset(){
// do stuff
}
})();
Questo è un grande pattern per una funzionalità che deve essere eseguita solo una volta e non ha dipendenze su altre funzioni.
Seguendo questi consigli il nostro codice funzionerà bene per gli utenti, per la macchina su cui viene eseguito, per gli altri sviluppatori. C'è tuttavia un altro gruppo di cui tenere conto.
L'ultimo passo per rendere gli script realmente non intrusivi è pensare allo sviluppatore che dopo di noi dovrà prendersi carico della sua gestione. Dobbiamo prendere in considerazione tali questioni:
La cosa più importante è capire che l'HTML e il CSS in un documento possono cambiare con più probabilità del Javascript. Dunque è una buona idea non avere nessun nome di classe e di ID o stringhe che saranno mostrate all'utente finale seppellite da qualche parte nel codice. Meglio separarle all'interno di un oggetto di configurazione:
myscript = function(){
var config = {
navigationID:'nav',
visibleClass:'show'
};
var nav = document.getElementById(config.navigationID);
function init(){
show();
if(nav.className === config.visibleClass){
reset();
};
// do stuff
};
function show(){
var c = nav.className;
// do stuff
};
function reset(){
// do stuff
};
}();
In questo modo chi deve mantenere il codice sa esattamente cosa cambiare e come cambiarlo senza dover alterare il resto del codice.
Guida Node.jsIl framework che permette di per usare V8, l'interprete JavaScript... |
Canvas, guida ai frameworkCanvas, tra gli elementi di HTML5 è forse quello di maggior impatto.... |
Guida jQuery UICreare siti ricchi e dinamici con jQuery UI, il progetto ufficiale... |
Ogni martedì, direttamente nella tua e-mail: guide, articoli, script, novità e approfondimenti tecnici su JavaScript.
Iscriviti alla newsletter
|
|
Corso Webmaster base18 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso JQuery e Ajax per Webmaster03 Luglio 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |
|
|
Corso Webmaster base11 Giugno 2012 a Roma |