In JavaScript können einzelne Objekte einfach literal erzeugt werden:
var konto1 = {
// Eigenschaften
nr: 1001,
stand: 0.0,
// Methoden
einzahlen: function (betrag) {
this.stand += betrag;
}
}
Leeres Objekt:
var empty = {};
Objekt-Konstruktor:
var konto2 = new Object({ nr: 1002, stand: 0.0 });
Objekte sind also Maps ähnlich (Key-Value-Zuordnungen), der Key-Typ ist übrigens String. Methoden sind also Funktionsausdrücke, die an Properties zugewiesen werden. Das this
-Schlüsselwort erhält bei der Ausführung das Objekt selbst als Wert.
Der Member-Zugriff erfolgt auf zwei Arten:
console.log(konto1.stand);
konto2["stand"] = 1000
Die zweite Variante ist natürlich insbesondere beim dynamischen Property-Zugriff interessant (bzw. falls der Property-Name z.B. numerisch ist oder Leerzeichen enthält).
Properties können natürlich jederzeit dynamisch ergänzt werden und über das Keyword delete
auch gelöscht werden:
konto2.einzahlen = function (betrag) {
this.stand += betrag;
}
Hier sieht man auch schon die erste Redundanz: die Methode einzahlen
ist für jedes Objekt zu definieren.
Bemerkung: Auch ohne die explizite Definition der Methode lässt sich diese über konto1
und die call- oder apply-Methode aufrufen:
konto1.einzahlen.call( konto2, 2000);
In JavaScript können Objekte also direkt angelegt werden, Abstraktionsschichten können gegebenenfalls später folgen.