buenas...
this básicamente es una referencia a —y siempre será— un objeto. al objeto que hace referencia dependerá del contexto en que se utilice. en adición,
this también se utiliza para crear instancias de un constructor (clases para algunos). en ese contexto, se utiliza el keyword
new para crear el nuevo objeto y ahí
this sería el nuevo objeto.
Código:
// ejemplo de constructor ;
function Klass(a, b){
this.a = a;
this.b = b;
}
var foo = new Klass(0, true);
var bar = new Klass('string', [10, 10]);
foo.a // integer 0 ;
foo.b // boolean true ;
bar.a // string 'string' ;
bar.b // array [10,10] ;
si en la consola ejecutas
this;, debes ver que se imprime la referencia al objeto principal del intérprete; en el caso de los navegadores el objeto Window. como vez,
this hace referencia a un objeto según donde se utilice. por ejemplo en un evento para un elemento,
this haría referencia a ese elemento.
Código:
<button onclick="this.innerHTML = 'Thanks!';">Click</button>