Ich versuche, den Namen des Elements innerhalb des Objekts zurückzugeben. Das zweite Element ist die Funktion getBook()
, die den Namen des Buches zurückgeben sollte, aber ich bekomme undefined
in meiner Konsole. Ich habe den zweiten Variablengetnamen definiert, der auf die Funktion innerhalb des Objekts verweist. Ich bin mir nicht sicher, ob ich this.element zurückgeben kann. Wenn jemand erklären kann, warum mein Code versagt, würde ich das schätzen. Vielen Dank.Funktion innerhalb eines Objekts definiert gibt den Wert nicht zurück?
0
A
Antwort
2
Sie müssen bind() Bücher zum getName-Funktion Ausdruck. Andernfalls wird der Kontext der this
wird das window
Objekt verweisen:
var books = {
name: 'Goodnight Moon',
getBook() {
return this.name;
}
};
var getName = books.getBook.bind(books);
console.log(getName());
0
Natürlich könnte man einfach tun
// same object definition
var books = {
name: 'Goodnight Moon',
getBook() {
return this.name;
}
};
// but call:
books.getBook();
console.log(books.getBook());
Verwandte Themen
- 1. sagt eine Funktion nicht definiert versucht, innerhalb eines Objekts
- 2. Funktion gibt schlechten Wert innerhalb eines Triggers zurück
- 3. So erhalten Sie den Wert eines Arrays innerhalb eines Objekts
- 4. Erste eine ID-Funktion innerhalb eines Objekts
- 5. Wie wird der Wert eines Objekts innerhalb eines Objekts aufgerufen?
- 6. tkinter: Callback gibt den Wert nicht zurück?
- 7. Warum gibt die Greet-Funktion nicht den erwarteten Wert zurück?
- 8. React-Funktion gibt keinen Wert zurück
- 9. event.target.innerHTML gibt den aktuellen Wert nicht zurück
- 10. Funktion gibt keinen Wert zurück
- 11. Corona SDK-Listener-Funktion innerhalb eines Objekts
- 12. Array gibt den korrekten Wert nicht zurück
- 13. Funktion innerhalb eines Objekts wird falscher Kontext
- 14. Funktion gibt keinen Wert zurück
- 15. Funktion mit Parametern innerhalb eines Objekts
- 16. Rückgabe eines Objekts innerhalb einer Funktion
- 17. Oracle 11.2.0.3 EXTRACT Wert gibt den Wert eines Knotens zurück
- 18. Javascript-Funktion innerhalb eines Objekts Differenz
- 19. Überprüfen eines leeren Objekts mit lodash gibt false zurück
- 20. Array innerhalb eines Arrays innerhalb eines Objekts? .?
- 21. Checkbox gibt den überprüften Wert nicht zurück
- 22. Javascript: Verfügbarmachen eines globalen Objekts innerhalb IIFE definiert
- 23. Python-Funktion gibt falschen Wert zurück
- 24. Funktion gibt JSON-Eigenschaftswert nicht zurück - node.js
- 25. Werfen eines Objekts einer Klasse innerhalb einer Klasse definiert
- 26. Warum gibt diese Begrüßungsfunktion nicht den akzeptierten Wert zurück?
- 27. Get-Array innerhalb eines Objekts
- 28. Funktion gibt keinen Wert zurück Actionscript Ratespiel
- 29. Abrufen eines Objekts innerhalb eines Objekts von JSON ohne Arrays
- 30. Funktion innerhalb des Objekts ausführen
Carl, vielen Dank für die Zeit nehmen zu reagieren. Bitte, würdest du mir erklären, warum wir bind verwenden müssen und warum mein ursprünglicher Code für die Rückgabe undefiniert ist? –
Ich habe meine Antwort aktualisiert. Lass es mich wissen, wenn es weitere Erklärungen benötigt. –
@espresso_coffee: Denken Sie an "das" als einen anderen Funktionsparameter. Je nachdem, wie die Funktion aufgerufen wurde, wird sie vom Aufrufer auf einen bestimmten Wert gesetzt. Sie können es auch manuell einstellen, wenn Sie wie 'getName.call (books) 'aufrufen, oder wie oben gezeigt, können Sie eine neue Funktion mit' .bind() 'erstellen, deren Wert permanent als Wert von' this' gebunden ist. –