JavascriptProva

sabato 21 gennaio 2012

Esercizi sullo scope

Questo codice, liberamente personalizzato dal codice di questa pagina è esplicativo:
<script>
function funzioneGlobale(){
 alert(this);
}

var oggetto = {
 funzioneLocale: function(){
  alert(this);
 }
}

funzioneGlobale();
oggetto.funzioneLocale();
</script>
La parola this, in realtà, indica semplicemente lo scope di una funzione.

Nel primo caso, essendo una funzione globale, l'output è [object Window], mentre nel secondo, essendo una funzione locale dell'oggetto oggetto, l'output è [object Object].
E' molto importante tenere a mente il concetto semplice ma fondamentale che this indica lo scope
Ora cominciamo a distorcere, straziare, torturare quel codice per farci un po' di esperimenti...

Chiamiamo la funzione globale da quella locale:
<script>
function funzioneGlobale(){
 alert(this);
}

var oggetto = {
 funzioneLocale: function(){
  funzioneGlobale();
 }
}

oggetto.funzioneLocale();
</script>
Output: [object Window]
La funzione globale viene chiamata dalla funzione locale.
Chiamiamo la funzione locale da quella globale:
<script>
function funzioneGlobale(){
 oggetto.funzioneLocale();
}

var oggetto = {
 funzioneLocale: function(){
  alert(this);
 }
}

funzioneGlobale();
</script>
Output: [object Object]
La funzione locale viene chiamata dalla funzione globale.
In conclusione: Ogni funzione dichiara lo scope nel quale viene eseguita.

Nessun commento:

Posta un commento