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

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

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"

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();

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());

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.

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

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.

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
- this léxico frente a dinámico y repaso de las arrow functions
- Problemas al extraer métodos y aplicación parcial
- Alternativas funcionales: pasar el contexto, closures y utilidades pequeñas