this, rappresenta lo scope di esecuzione di JS.
Lo scope è il node dell'albero che parte dall'oggetto window in cui ci si trova al momento dell'esecuzione:
Ti faccio un esempio ottimo:
Codice PHP:
window.onload = function(){
alert(this.toString()); /*Lo scope è l'oggetto window in questo momento*/
var div = document.getElementbyId('MyDiv');
//Div contiene l'oggetto che fa riferimento all'element div id="MyDiv"
div.onclick = function()
{
alert(this.toString()); /*Lo scope è l'oggetto DIV non window.
Essendo div un figlio del nodo window ha accesso a tutti le proprietà definite
nell'oggetto padre window*/
document.body.onmouseup = function(){
alert(this.toString()); /*Qui lo scope è l'elemento body, non più div, tra l'altro
non potrei accedere alle variabili globali di div, non senza ottenere l'oggetto div.
Inoltre se avessi definito una variabile nella funzione onclick del div non potrei
accedervi, perché lo scope sarebbe esterno alla funzione dove sono state
definite.*/
}
}
}