Beim Erstellen eines Objekts in JavaScript scheint this
nicht auf das Objekt zu zeigen, das ich erstelle.Geltungsbereich von "this" innerhalb der Objektdeklaration
In dem folgenden Beispiel sollte anArrayValue
"a"
sein, aber es wird als protokolliert.
const anArray = ['a', 'b', 'c'];
const anObject = {
arrayIndex: 0,
// I want to use anObject.arrayIndex here, but it's undefined
anArrayValue: anArray[this.arrayIndex],
log() {
console.log(this.anArrayValue);
}
};
//logs undefined
anObject.log();
//logs 'a'
console.log(anArray[anObject.arrayIndex]);
Dies verweist immer auf den Aufruf des Ausführungskontextes. Das ist ein literales Objekt, dessen Deklaration im Fensterkontext ausgeführt wird. Daher ruft this.arrayIndex window.arrayIndex auf. Sie werden ein echtes Objekt für diese Art von Referenz benötigen. –