Sie sind hier 551
Fortgeschrittene Objektkonstruktion
F:
Ich bin mir nicht sicher, wie die Kon-
struktoren Date und Array funktionieren:
Anscheinend unterstützen sie ein oder mehrere
Argumente. Wenn ich beispielsweise bei Date
kein Argument angebe, bekomme ich das aktu-
elle Datum zurück, kann aber auch Argumente
übergeben, um andere Daten zu erhalten. Wie
funktioniert das?
A: Gut beobachtet. Sie können Funktionen so
schreiben, dass sie je nach Anzahl der Argu-
mente unterschiedliche Dinge tun. Werden dem
Array-Konstruktor keine Argumente übergeben,
weiß er, dass ein leeres Array erzeugt werden soll.
Bei einem Argument weiß er, dass es sich um die
Länge des Arrays handelt. Bei mehreren Argumen-
ten sind es dagegen die Werte für die einzelnen
Array-Elemente.
F:
Geht das auch mit unseren eigenen
Konstruktoren?
A: Aber sicher. Das haben wir zwar noch nicht
besprochen, aber jeder Funktion wird ein Objekt
übergeben, das die Argumente enthält. Das können
wir benutzen, um herauszufinden, was übergeben
wurde, und entsprechend handeln (weitere
Informationen zum arguments-Objekt finden Sie im
Anhang). Daneben gibt es weitere Techniken, die
überprüfen, welche Ihrer Parameter nicht definiert
(undefined) sind, um entsprechende Aktionen
durchzuführen.
F:
Weiter vorne in diesem Buch haben wir
das Math-Objekt benutzt. Warum musste ich
nicht schreiben »new Math«, um ein neues
Math-Objekt vor seiner Benutzung zu instanzi-
ieren?
A:
Sehr gute Frage. Eigentlich ist Math kein
Konstruktor, nicht einmal eine Funktion. Es ist
ein Objekt. Wie Sie wissen, ist Math ein einge-
bautes Objekt, mit dem Sie verschiedene Dinge
anstellen können, z. B. den Wert von Pi ermitteln
(mit Math.PI) oder eine Zufallszahl erzeugen
(mit Math.Random). Stellen Sie sich Math
einfach als Objektliteral vor, das eine Reihe von
nützlichen Eigenschaften und Methoden enthält,
die Sie an beliebiger Stelle in Ihrem Code verwen-
den können. Sein Name beginnt nur mit einem
Großbuchstaben, damit Sie wissen, dass es Teil
von JavaScript selbst ist.
F:
Ich weiß, wie man testet, ob ein Objekt
eine Instanz eines bestimmten Konstruktors ist.
Aber wie schreibe ich den Code, um zu testen,
ob zwei Objekte vom gleichen Konstruktor
stammen?
A: Um zu überprüfen, ob zwei Objekte vom
gleichen Konstruktor stammen, können Sie zum
Beispiel den folgenden Code benutzen:
((fido instanceof Dog) &&
(spot instanceof Dog))
Ist das Ergebnis dieses Ausdrucks true, wurden
fido und spot tatsächlich vom gleichen Konstruktor
erzeugt.
F:
Wenn ich ein Objekt mit einem Objektlite-
ral erzeuge, von was ist es dann eine Instanz?
Oder ist es überhaupt eine Instanz von irgendet-
was?
A: Ein Objektliteral ist eine Instanz von Object.
Stellen Sie sich Object als allgemeinen Konstruktor
für allgemeine JavaScript-Objekte vor. Im folgenden
Kapitel gehen wir genauer darauf ein, wie Object in
das Objektsystem von JavaScript passt.
Noch mehr Spaß mit eingebauten Objekten
Dabei sind Date und Array nicht die einzigen JavaScript-eigenen Objektkonstruktoren. Die Sprache
enthält noch wesentlich mehr eingebaute Konstruktoren, die praktisch für Sie sein können. Hier eine kurze
Liste (falls Sie neugierig sind, hilft eine Onlinesuche nach »JavaScript’s standard built-in objects«).
Object
Mit dem Object-Konstruktor können Sie Objekte
erzeugen. Wie bei Arrays ist die literale Objekt-
schreibweise {} gleichbedeutend mit der Verwen-
dung von new Object(). Mehr dazu später.
Math
Dieses Objekt besitzt Eigenschaften und
Methoden für mathematische Aufgaben,
wie etwa Math.PI und Math.random().
RegExp
Mit diesem Konstruktor können Sie reguläre Aus-
drücke erstellen, mit denen Sie selbst komplizier-
te Suchmuster in Textelementen finden können.
Error
Dieser Konstruktor erzeugt Standard-Fehler-
objekte, die Ihnen bei der Fehlersuche in
Ihrem Code behilflich sind.
Es gibt keine
Dummen Fragen
552 Kapitel 12
Übung zur Erstellung von Objekten
Webville Motors revolutioniert seine Autoproduktion, indem alle
Fahrzeuge anhand eines Prototyps gefertigt werden. Dieser Prototyp
enthält alle benötigten Grundlagen: Methoden zum Starten (start), Fahren
(drive) und Anhalten (stop) sowie verschiedene Eigenschaften, wie
Hersteller und Baujahr. Die übrigen Dinge sind Ihre Sache. Soll das Auto
rot oder blau sein? Kein Problem, passen Sie die Farbe einfach an. Soll
ein spezielles Soundsystem installiert werden? Auch kein Ding, lassen Sie
sich gehen, bauen Sie es ein.
Dies ist Ihre Gelegenheit, das perfekte Auto zu entwickeln. Erstellen Sie
unten ein CarPrototype-Objekt und bauen Sie Ihr Traumauto. Vergleichen
Sie Ihr Design mit unserer Lösung am Ende des Kapitels, bevor Sie
weiterlesen.
function CarProtoype() {
this.make = "Webville Motors";
this.year = 2013;
this.start = function() {...};
this.stop = function() {...};
this.drive = function() {...};
}
Zeichnen Sie hier Ihr Auto.
Und hier kommt
Ihr angepasster
Prototyp hin.
Und wo soll das hinführen? Das
zeigen wir Ihnen im folgenden
Kapitel! Übrigens ist dieses
Kapitel hier offiziell zu Ende.
Allerdings gibt es noch die
»Punkt für Punkt«-Liste und
das Kreuzworträtsel.

Get JavaScript-Programmierung von Kopf bis Fuß now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.