Skip to content

This Keywords

El keyword this en JavaScript se refiere al objeto que está ejecutando el código actual. Su valor depende de cómo y dónde se utilice this. Aquí hay una descripción detallada de cómo funciona this en diferentes contextos:

En un método de objeto

Cuando se usa dentro de un método de un objeto, this se refiere al objeto que contiene el método.

var objeto = {
propiedad: "valor",
metodo: function () {
console.log(this.propiedad); // 'valor'
},
};
objeto.metodo();

Alone (solo)

Si se usa this fuera de cualquier contexto (por ejemplo, en el ámbito global), se refiere al objeto global (window en navegadores).

console.log(this); // window en navegadores

En una función

Dentro de una función regular (no un método de objeto), this se refiere al objeto global.

function funcion() {
console.log(this); // window en navegadores
}
funcion();

En modo estricto

En modo estricto (‘use strict’;), this dentro de una función regular es undefined.

"use strict";
function funcion() {
console.log(this); // undefined
}
funcion();

En un evento

Dentro de un controlador de eventos, this se refiere al elemento que disparó el evento.

document.getElementById("miBoton").addEventListener("click", function () {
console.log(this); // El elemento con id 'miBoton'
});

Métodos call(), apply(), y bind()

Estos métodos permiten especificar explícitamente el valor de this al llamar a una función.

function saludar() {
console.log("Hola, " + this.nombre);
}
var persona = { nombre: "Juan" };
saludar.call(persona); // 'Hola, Juan'

Arrow Functions

Las arrow functions no tienen su propio this. En su lugar, this se refiere al contexto léxico en el que se define la arrow function.

const objeto = {
nombre: "Pedro",
saludar: () => {
console.log("Hola, " + this.nombre); // 'Hola, undefined'
},
};
objeto.saludar();

Resumen

  • this se refiere al objeto que está ejecutando el código actual.
  • Su valor puede variar dependiendo del contexto en el que se utilice.
  • En métodos de objeto, this se refiere al objeto.
  • Fuera de cualquier contexto, this se refiere al objeto global.
  • En modo estricto, this dentro de una función regular es undefined.
  • En un controlador de eventos, this se refiere al elemento que disparó el evento.
  • Los métodos call(), apply(), y bind() permiten especificar el valor de this.
  • Las arrow functions no tienen su propio this, sino que heredan el valor de this del contexto léxico.