¿Cómo funciona la palabra clave this en JavaScript y cuándo debe usarse?
¡Hola a todos! Soy nuevo en JavaScript y constantemente me confundo con la palabra clave `this`. Leí la documentación, pero parece demasiado complicada. Tengo este código:
```javascript
const user = {
name: 'Anna',
greet: function() {
console.log('Hola, ' + this.name);
}
};
const greetFunc = user.greet;
user.greet(); // Muestra "Hola, Anna" — ¡funciona!
greetFunc(); // Muestra "Hola, undefined" — ¿por qué?
```
Cuando llamo a `user.greet()`, todo funciona. Pero si guardo el método en una variable y la llamo, `this.name` se vuelve `undefined`. ¿Por qué sucede esto? Y además: he oído que `this` se comporta de manera diferente en arrow functions y en funciones normales. ¿Cómo puedo entender a qué se referirá `this` en mi código? ¿Cuándo debería usar `this` y cuándo es mejor pasar el objeto como parámetro? Agradecería una explicación simple con ejemplos.