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
Section titled “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)
Section titled “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 navegadoresEn una función
Section titled “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
Section titled “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
Section titled “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()
Section titled “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
Section titled “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
Section titled “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.