¿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!