JS Objekte

Wie die Arrays, die im Quellcode mit eckigen Klammern [ ] erzeugt werden können, haben einfache Objekte in Javascript eine eigene literale Schreibweise, die die geschweiften Klammern { } benutzt.

JavaScript// create empty object
const obj = {};

// create object with properties
const dot = {
  x: 100,
  y: 100,
  size: 40,
  color: 'black',
};

Eigenschaften

Objekt-Eigenschaften können entweder mit der .-Syntax oder mit eckigen Klammern [ ] beliebig zugewiesen (d.h. erzeugt oder überschrieben), verändert und ausgelesen werden.

Der Zugriff mit eckigen Klammern erwartet einen String und konvertiert alles andere zu einem String (wie zum Beispiel bei Arrays die Zahlen). Es können auch Variablen oder Ausdrücke in den eckigen Klammern stehen und es sind mehr Zeichenkombinationen als beim Punktzugriff möglich.

JavaScript// create empty object (this time with 'new' instead of '{}')
const obj = new Object();

// assign, modify and access property using the '.'-syntax
obj.count = 0;
obj.count += 7;
let count = obj.count; // is 7

// assign, modify and access property using the '[]'-syntax
obj['count'] = 0;
obj['count'] += 7;
count = obj['count']; // is 7

Mit delete können Eigenschaften wieder aus einem Objekt gelöscht werden.

JavaScriptconst obj = { count: 7 };
delete obj.count;

Verschachtelung und Referenzen

Objekte und Arrays können beliebig verschachtelt werden.

JavaScriptconst song = {
  title: "Over the Rainbow",
  composer: "Harold Arlen",
  lyrics: "Yip Harburg",
  year: 1939,
  singer: "Judy Garland",
  versions: [
    {
      artist: "Israel Kamakawiwo'ole",
      year: 1993,
    },
    {
      artist: "Cliff Richard",
      year: 2001,
    },
    {
      artist: "Danielle Hope",
      year: 2010,
    },
    {
      artist: "Ariana Grande",
      year: 2017,
    },
  ],
};

Hierbei werden immer nur Referenzen auf Objekte gespeichert, sodass ein Objekt, das einer Variable oder einer Eigenschaft eines anderen Objekts zugewiesen wird, nie kopiert, sondern nur eine Referenz darauf eingefügt wird.

JavaScriptlet o = { a: 1, b: 2, c: 3 };
let p = o;
p.d = 4; // { a: 1, b: 2, c: 3, d: 4}
console.log(o.d); // 4

Methoden der Object Basis-Klasse

Die Object Basis-Klasse stellt einige hilfreiche Methoden zur Verfügung:

MethodeBeschreibung
keys()gibt einen Array der Eigenschaften des Objects zurück
values()gibt einen Array der Werte der Eigenschaften des Objects zurück
entries()gibt einen Array von Key-Value-Paaren der Eigenschaften des Objects zurück
assign(target, ... sources)kopiert die Werte der Eigenschaften eines oder mehrerer Quell-Objekte
JavaScriptconst dot = {
  x: 100,
  y: 100,
  size: 40,
  color: 'black',
};

for (let [key, value] of Object.entries(dot)) {
  console.log(`${key} is ${value}`);
}

Vordefinierte Klassen

Javascript stellt eine Reihe vordefinierter Klassen zur Verfügung um komplexe Datentypen darzustellen, wie z.B.:

KlasseBeschreibungSyntax
Objectgrundlegende Objekt-Klasse{ }
ArrayArray[ ]
StringZeichenkette" " oder ' ' oder ` `
RegExpRegular Expression\ \
SetSammlung beliebiger Werte
MapSammlung von Key-Value-Paaren