<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