Una traduzione di scope potrebbe essere quella di contesto di esecuzione all'interno del quale una particolare funzione JavaScript viene eseguita. Questo è un concetto abbastanza nuovo per chi proviene da qualche altro linguaggio di programmazione: nei linguaggi funzionali non ha senso parlare di contesto di esecuzione in quanto le diverse funzioni risiedono nello stesso grande contenitore globale, mentre nei linguaggi orientati agli oggetti, nonostante esista un ambiente all'interno del quale ciascun metodo viene invocato, esso non può essere in qualche modo gestito in quanto è sempre rappresentato dall'oggetto stesso sul quale il metodo viene chiamato.
In JavaScript qualsiasi funzione ha uno scope che può essere referenziato tramite la keyword this. Questo costrutto interno al linguaggio serve appunto per fare riferimento al macro-oggetto all'interno del quale il metodo viene eseguito. Se una determinata funzione non presenta uno scope preciso, essa verrà invocata all'interno del oggetto globale window, che, come sappiamo, è uno degli oggetti impliciti del motore di interpretazione di JavaScript quando viene eseguito all'interno di un browser e che rappresenta la finestra aperta dall'utente.
Vediamo subito un esempio:
<script type="text/javascript">
var funzioneGlobale = function() {
alert(this); // oggetto implicito window
}
var container = {
funzioneLocale: function() {
alert(this); //oggetto container
}
}
funzioneGlobale();
container.funzioneLocale();
</script>
Abbiamo creato due funzioni, una globale e una definita come membro di un oggetto. Nonostante il contenuto della funzione sia lo stesso, l'esito non sarà tale. Infatti funzioneGlobale() viene eseguita all'interno dell'oggetto window mentre funzioneLocale() all'interno del nostro oggetto container. Per questo motivo lo scope tra le due funzioni sarà diverso. Fin qua sembra tutto facile. È tempo di fare un passo avanti.
PhantomJS, headless browser per test con JavascriptIl tool ideale per realizzare, da terminale, operazioni in remoto su... |
Creare e leggere QR Code in JavaScriptApplicazioni 'QR Code enabled' per il Web e per il mobile,... |
Jquery UI Map: web-mapping con Google Maps e jQueryUn plugin di jQuery UI per intefacciare applicaizoni Web/mobile con... |
Scrollorama e Scrolldeck, slideshow d'effetto con jQueryPlugin jQuery per ottenere Slideshow con diversi effetti di scrolling |
jCanvas, un primo semplice graficoAlla scoperta della libreria jCanvas, per semplificare il disegno e... |
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 Javascript: tecniche avanzateUna guida dal taglio pratico per approfondire la programmazione a... |
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 |