0Pricing
JavaScript Academy · Lección

this léxico frente a dinámico y repaso de las arrow functions

Observe cómo el this dinámico depende del lugar de la llamada y cómo las funciones flecha capturan el this léxico; use ejemplos pequeños y claros.

this léxico frente a dinámico y repaso de las arrow functions es una lección gratuita de JavaScript Academy en CoddyKit. Esta es la lección 1 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de JavaScript Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de JavaScript Academy incluye 3 lecciones en total.

Panorama general

Objetivo: Sepa cuándo this apunta a cada lugar.

  • this dinámico: lo decide el sitio de llamada
  • this de las funciones flecha: se captura léxicamente
  • Error común: extraer un método hace que se pierda this
  • Use funciones flecha para conservar this dentro de los callbacks
this léxico frente a dinámico y repaso de las arrow functions — ilustración 1

Demostración de this dinámico

this dinámico: llamar como obj.method() establece this = obj; extraer la función hace que se pierda el objeto.

// Dynamic this depends on HOW we call the function
const person = {
  name: "Ayla",
  say: function () {
    return "Hi " + this.name;
  }
};

console.log("method call:", person.say()); // "Hi Ayla"

// Extract then call: this is lost
const talk = person.say;
console.log("extracted call:", talk()); // likely "Hi undefined" in strict mode -> this is undefined
this léxico frente a dinámico y repaso de las arrow functions — ilustración 2

Función flecha = this léxico

Una función flecha toma this del ámbito de la función u objeto circundante al crearse; no lo cambia al llamarse.

// Arrow functions capture this from where they are created
const box = {
  label: "blue",
  showLater: function () {
    // Arrow keeps this === box
    const fn = () => "box:" + this.label;
    return fn();
  }
};

console.log("arrow captured this:", box.showLater()); // "box:blue"
this léxico frente a dinámico y repaso de las arrow functions — ilustración 3

Callbacks: conserve this con funciones flecha

En los callbacks, una función normal suele perder this; una función flecha conserva intacto el this externo.

// Using a normal function in a callback can lose this
const widget = {
  id: 7,
  normal: function () {
    setTimeout(function () {
      // here this is not widget in many environments
      console.log("normal cb this.id:", this && this.id);
    }, 0);
  },
  arrow: function () {
    setTimeout(() => {
      // arrow keeps lexical this from arrow()
      console.log("arrow cb this.id:", this.id);
    }, 0);
  }
};

widget.normal();
widget.arrow();
this léxico frente a dinámico y repaso de las arrow functions — ilustración 4

Solución sencilla para la extracción

Si se extrae un método, envuélvalo en una pequeña función flecha que capture el objeto, o asócielo con bind (en la próxima lección). Mantenga el enfoque sencillo para principiantes.

// If you must extract, wrap with an arrow capturing the object
const account = {
  owner: "Mila",
  label: function () { return "Owner:" + this.owner; }
};

// Lost this:
const lost = account.label;
console.log("lost:", lost()); // "Owner:undefined" (this missing)

// Fixed: create an arrow that closes over account
const safe = () => account.label();
console.log("fixed via arrow wrapper:", safe());
this léxico frente a dinámico y repaso de las arrow functions — ilustración 5

Buenos hábitos

Consejos:

  • Métodos: llámelos con obj.method() para que this sea el objeto.
  • Callbacks: prefiera las funciones flecha para conservar el this léxico.
  • Los métodos extraídos pierden this; envuélvalos en una función flecha o asócielos.
this léxico frente a dinámico y repaso de las arrow functions — ilustración 6

Cuestionario sobre this en funciones flecha

Comprobación rápida: comportamiento de this en las funciones flecha.

this léxico frente a dinámico y repaso de las arrow functions — ilustración 7

Resumen

Resumen: this es dinámico para las funciones normales (lo establece el sitio de llamada) y léxico para las funciones flecha (se captura donde se crean). Use funciones flecha en los callbacks y envuelva los métodos extraídos para mantener un comportamiento sencillo.

this léxico frente a dinámico y repaso de las arrow functions — ilustración 8

Preguntas frecuentes

¿La lección «this léxico frente a dinámico y repaso de las arrow functions» es gratis?

Sí — el texto completo de «this léxico frente a dinámico y repaso de las arrow functions» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de JavaScript Academy, actualiza a CoddyKit PRO. El curso de JavaScript Academy incluye 3 lecciones en total.

¿Qué aprenderé en «this léxico frente a dinámico y repaso de las arrow functions»?

Observe cómo el this dinámico depende del lugar de la llamada y cómo las funciones flecha capturan el this léxico; use ejemplos pequeños y claros. Practicas JavaScript Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar JavaScript Academy?

No se requiere experiencia previa. JavaScript Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 3.

¿Cuánto tiempo toma la lección «this léxico frente a dinámico y repaso de las arrow functions»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de JavaScript Academy?

Sí. Cada lección de JavaScript Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. this léxico frente a dinámico y repaso de las arrow functions
  2. Problemas al extraer métodos y aplicación parcial
  3. Alternativas funcionales: pasar el contexto, closures y utilidades pequeñas
← Volver a JavaScript Academy