Читать книгу JavaScript – Das Handbuch für die Praxis - David Flanagan - Страница 73

4.2Initialisierungsausdrücke von Objekten und Arrays

Оглавление

Objekt- und Array-Initialisierer sind Ausdrücke, deren Wert ein neu erzeugtes Objekt oder Array ist. Diese Initialisierungsausdrücke werden auch als Objektliterale und Array-Literale bezeichnet. Im Unterschied zu echten Literalen sind sie jedoch keine elementaren Ausdrücke, da sie mehrere Teilausdrücke mit Eigenschafts- und Elementwerten enthalten. Array-Initialisierer haben eine etwas einfacherere Syntax als Objektinitialisierer. Mit ihnen wollen wir deswegen beginnen.

Ein Array-Initialisierer ist eine durch Kommata getrennte Liste von Ausdrücken in eckigen Klammern. Der Wert eines Array-Initialisierers ist ein neu erstelltes Array. Die Elemente dieses neuen Arrays werden mit den Werten der durch Kommata getrennten Ausdrücke initialisiert:

[] // Ein leeres Array. Keine Ausdrücke in den Klammern heißt:

// keine Elemente.

[1+2,3+4] // Ein Array mit 2 Elementen. Das erste Element ist 3, das zweite 7.

Die Elementausdrücke in einem Array-Initialisierer können selbst auch wieder Array-Initialisierer sein, was bedeutet, dass mit solchen Ausdrücken verschachtelte Arrays erstellt werden können:

let matrix = [[1,2,3], [4,5,6], [7,8,9]];

Die Elementausdrücke in einem Array-Initialisierer werden jedes Mal ausgewertet, wenn der Array-Initialisierer ausgewertet wird. Das heißt, der Wert eines Array-Initialisierungsausdrucks kann bei jeder Auswertung anders lauten.

Undefinierte Elemente können in Array-Literale aufgenommen werden, indem zwischen zwei Kommata einfach kein Wert angegeben wird. Das folgende Array enthält beispielsweise fünf Elemente, von denen drei undefiniert sind:

let sparseArray = [1,,,,5];

Nach dem letzten Ausdruck in einem Array-Initialisierer ist ein nachstehendes Komma erlaubt, ohne dass dabei ein undefiniertes Element erstellt wird. Jeder Ausdruck zum Zugriff auf einen höheren Index als den des letzten Ausdrucks wird jedoch zwangsläufig zu undefined ausgewertet.

Objekt-Initialisierungsausdrücke ähneln Array-Initialisierungsausdrücken, stehen statt in eckigen aber in geschweiften Klammern. Außerdem werden jedem Teilausdruck innerhalb der Klammern ein Eigenschaftsname und ein Doppelpunkt vorangestellt:

letp={ x: 2.3, y: -1.2 }; // Ein Objekt mit 2 Eigenschaften.

let q = {}; // Ein leeres Objekt ohne Eigenschaften.

q.x = 2.3; q.y = -1.2; // Jetzt hat q die gleichen Eigenschaften wie p.

Ab ES6 haben Objektliterale eine wesentlich funktionsreichere Syntax (Details finden Sie in 6.10). Objektliterale können ebenfalls verschachtelt werden, zum Beispiel:

let rectangle = {

upperLeft: { x: 2, y: 2 },

lowerRight: { x: 4, y: 5 }

};

Objektliterale werden ausführlich in den Kapiteln 6 und 7 behandelt.

JavaScript  –  Das Handbuch für die Praxis

Подняться наверх