Wie erhalte ich korrekt Zugriff auf `this` innerhalb einer Callback-Funktion in JavaScript?
Hallo zusammen! Ich habe gerade angefangen, JavaScript zu lernen, und bin auf ein Problem gestoßen, das ich einfach nicht lösen kann. Ich habe ein Objekt `user` mit einer Eigenschaft `name` und einer Methode `greet`. Ich möchte, dass die Methode `greet` nach 2 Sekunden eine Begrüßung mit dem Benutzernamen ausgibt. Dafür verwende ich `setTimeout`. Aber wenn ich den Code ausführe, wird statt des Namens `undefined` ausgegeben. Hier ist mein Code:
```javascript
const user = {
name: 'Anna',
greet: function() {
setTimeout(function() {
console.log(`Hallo, ${this.name}!`);
}, 2000);
}
};
user.greet(); // Gibt "Hallo, undefined!" aus
```
Ich verstehe, dass das Problem darin liegt, dass innerhalb der Callback-Funktion in `setTimeout` der Kontext `this` verloren geht. Aber ich verstehe nicht, warum das passiert und wie man es beheben kann. Ich habe versucht, die Dokumentation zu lesen, aber dort