En JavaScript, la palabra clave this se comporta de forma diferente a como lo hace en otros lenguajes. Por empezar, this siempre se refiere a un objeto, sólo que ese objeto será uno u otro según cómo y dónde se llame a this.

<aside> 💡 Todavía no trabajaremos con objetos, pero es preciso conocer el uso de this para no tropezar con algunos casos especiales de JavaScript acotado a la programación estructurada.

</aside>

Hay varias formas de usar this, por lo que a medida que avancemos por este curso, aprenderemos otros usos de this dependiendo del contexto en el que la usemos.

Empecemos por el principio, el caso más simple y directo: usar this fuera de todo objeto, función o evento.

El siguiente ejemplo, al ejecutarlo nos muestra la imagen que podemos ver después del bloque de código:

console.log(this); 

Untitled

La respuesta que nos da la consola es el objeto Window, que es el objeto global.

<aside> 💡 El objeto global puede diferir si JavaScript se está ejecutando en otro entorno, por ejemplo, en Node.js está relacionado al módulo que contiene al script. Aprenderemos sobre módulos más adelante.

</aside>

Podemos asignar this a una variable, pero no podemos asignar valores a this, pues this no es una variable, sino una palabra clave.

Funciones y this

Si usamos this dentro de una función, el resultado dependerá de si tenemos activado o no el modo estricto.

Si estamos trabajando en el modo por defecto, no estricto, this hará referencia al objeto global, que en el navegador es Window.

Pero, si estamos trabajando en modo estricto, this será undefined.

Aprenderemos más sobre funciones y this en la sección llamada El complejo mundo de las funciones.

Objetos, métodos y this

Cuando trabajamos con objetos es muy común utilizar this. En ese contexto, this hace referencia al objeto actual con el que estamos trabajando, como en la mayoría de los lenguajes que soportan Programación Orientada a Objetos.

Dentro de los objetos, podemos tener métodos que también hacen uso de this. En ese caso, la referencia también es el objeto sobre el que estamos trabajando y al que pertenece el método.