Avatar ·

¿Cómo acceder correctamente a `this` dentro de una callback function en JavaScript?

¡Hola a todos! Acabo de empezar a aprender JavaScript y me encontré con un problema que no puedo resolver. Tengo un objeto `user` con una propiedad `name` y un método `greet`. Quiero que el método `greet` muestre un saludo con el nombre del usuario después de 2 segundos. Para eso uso `setTimeout`. Pero cuando ejecuto el código, en lugar del nombre se muestra `undefined`. Aquí está mi código: ```javascript const user = { name: 'Anna', greet: function() { setTimeout(function() { console.log(`¡Hola, ${this.name}!`); }, 2000); } }; user.greet(); // Muestra "¡Hola, undefined!" ``` Entiendo que el problema es que dentro de la callback function en `setTimeout` se pierde el contexto `this`. Pero no entiendo por qué ocurre esto ni cómo solucionarlo. Intenté leer la documentación, pero es demasiado complicada. Por favor, explíquenme en palabras simples qué es `this` en JavaScript y cómo pasarlo correctamente a una callback. ¡Agradeceré ejemplos con explicaciones!