JavaScript/Tutorials/OOP/Erzeugung von Objekten

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Wir haben in den Beispielen bisher eine Funktion Object() mit dem Schlüsselwort new für die Erzeugung eines Objektes benutzt, um dann das Objekt sozusagen von Hand zusammenzubauen. Hier schauen wir, was es damit genauer auf sich hat und welche anderen Möglichkeiten es gibt, ein Objekt zu erzeugen.

Objektliterale[Bearbeiten]

In JavaScript kann man nicht nur eine Funktion als Literal notieren, sondern auch andere Objekte. Die Schreibweise eines Objektliterals war übrigens die Grundlage für das mittlerweile im Internet sehr verbreitete JSON-Format.

Ein Objektliteral
const geo = {
  latitude: 1.234,
  longitude: 2.345
};

const o = {
  alter: 15,
  name: "Frizzy",
  vorstellen: function () {
    return "Ich heiße " + this.name + " und bin " + this.alter + " Jahre alt.";
  }
};

o.vorstellen(); // Ich heiße Frizzy und bin 15 Jahre alt.
In die Variable geo wird ein Objekt gespeichert, welches als Objektliteral ausnotiert ist. Die Schreibweise verwendet geschweifte Klammern, um das Objekt nach außen hin abzugrenzen. Innen ist eine mit Kommata getrennte Liste an Eigenschaften, wobei Name und Wert durch einen Doppelpunkt getrennt sind.

Bei geo handelt es sich um ein Zahlenpaar, dessen erste Zahl unter dem Eigenschaftsnamen latitude, die zweite unter dem Namen longitude abgelegt wird. Für eine Geo-Koordinate ist diese Schreibweise sicherlich effizienter und besser lesbar, als unser Beispiel im vorherigen Kapitel.

In der Variable o finden wir ebenfalls ein Beispiel von vorher, welches nun ebenfalls als Objektliteral notiert ist. Die Methode vorstellen wird wie jede andere Eigenschaft auch notiert, nur ihr Wert besteht aus einem Funktionsobjekt, das seinerseits als Funktionslisteral geschrieben steht.

Hinweis

Ein Objektliteral ist immer dann eine gute und sinnvolle Schreibweise, wenn es sich um ein Objekt handelt, das nur einmal benötigt wird. Auch wenn man keine Methoden im Objekt benötigt, kann man so effizient und vor allem gut lesbar ein Objekt erzeugen.

Konstruktoren[Bearbeiten]

Wenn man mehrere Objekte von einer Art benötigt, lohnt sich der Einsatz eines sogenannten Konstruktors. Ein Konstruktor ist im Wesentlichen eine Funktion, die ein Objekt baut. Konstruktoren werden mit dem Schlüsselwort new verwendet.

mit Konstruktorfunktion
function Person (n, a) {
  this.name = n;
  this.alter = a;
  this.vorstellen = function () {
    return "Ich heiße " + this.name + " und bin " + this.alter + " Jahre alt.";
  }
}

const o = new Person("Frizzy", 15);

o.vorstellen(); // Ich heiße Frizzy und bin 15 Jahre alt.

const p = new Person("Ozzy", 39);

p.vorstellen(); // Ich heiße Ozzy und bin 39 Jahre alt.
Die Funktion Person nimmt zwei Parameter entgegen, deren Werte den Eigenschaften name und alter zugewiesen werden.
Anschließend werden zwei Objekte mit dieser Funktion erzeugt, wobei sie unter Zuhilfenahme des Schlüsselwortes new als Konstruktorfunktion dient. Würde man sie ohne new aufrufen, würde sie kein Objekt erzeugen.
Beachten Sie: Bisher hatten wir new Object() verwendet, um ein neues leeres Objekt zu erzeugen. Hier verwenden wir new Person(...). Sowohl die Funktion Person als auch die Funktion Object sind Konstruktorfunktionen, die mit dem Schlüsselwort new Objekte erzeugen können.

Hinweis

Es hat sich eingebürgert, die Namen von Konstruktorfunktionen mit einem Großbuchstaben am Anfang zu schreiben. Mit der Einführung der Klassen-Syntax ist diese Schreibweise zwar nicht veraltet (die neue ist nur sogenannter syntaktischer Zucker), aber deutlich weniger gut lesbar. Verwenden Sie lieber eine echte Klasse wie im nächsten Kapitel beschrieben.