Sie sind hier 589
Prototypen verwenden
Wenn wir die benötigten
neuen Methoden in den schon
vorhandenen Dog-Konstruktor
einbauen, bekommen automatisch
alle Hunde diese Fähigkeiten. Das
wollen wir aber nicht.
Wir könnten die
zusätzlichen Methoden für
Ausstellungshunde einfach
den entsprechenden Hund-
Instanzen hinzufügen. Aber
dann bekommen wir wieder die
gleichen Probleme, die wir am
Anfang des Kapitels bereits
ausgeräumt hatten.
Wie gestalten wir den Code für diese Aufgabe? Optimal wäre es, wenn wir den vorhandenen
Code für die Hunde wiederverwenden könnten. Deshalb hat uns der Hundezüchterverein ja
überhaupt angesprochen. Aber wie? Lassen Sie uns kurz darüber nachdenken:
Die Herangehensweise für Ausstellungshunde
Wenn wir den ShowDog-
Konstruktor komplett neu bauen,
müssen wir allerdings auch die
Grundmethoden bark, run, sit
usw. neu implementieren …
590 Kapitel 13
Gespräch über Prototypen
Jungs, entspannt euch. In
JavaScript könnt ihr mehr als
einen Prototyp benutzen.
Joe: Mehr als einen Prototyp – was heißt das denn schon wieder?
Judy: Stell dir das wie deine eigene Vererbung vor.
Joe: Was für eine Vererbung? Wenn ich etwas geerbt hätte, bräuchte ich hier nicht zu arbeiten!
War nur ein Scherz …
Judy: Du erbst deine Eigenschaften ja nicht nur von deinen Eltern, oder? Da ist immer auch
ein bisschen von deinen Großeltern und Urgroßeltern mit dabei.
Joe: Ah, jetzt verstehe ich langsam.
Judy: Und in JavaScript kannst du eine Kette aus Prototypen erstellen, von denen deine
Objekte erben.
Frank: Ein Beispiel wäre nicht schlecht.
Judy: Angenommen, du hast einen Vogel-Prototyp, der weiß, wie man die Sachen tut, die
Vögel so tun, fliegen zum Beispiel.
Frank: Ich verstehe. Das ist wie bei unserem Hund-Prototyp.
Judy: Und jetzt stell dir vor, du sollst eine ganze Reihe von Enten implementieren,
Stockenten, Flugenten …
Frank: … und die Gummiente nicht zu vergessen.
Judy: Oh ja, vielen Dank, Frank.
Frank: Kein Problem, ich habe schließlich gerade im Buch Entwurfsmuster - Von Kopf bis Fuß darüber
gelesen.
Judy: Okay, aber Enten sind eine vollkommen andere Vogelart. Sie schwimmen, und das wollen wir
nicht in den Vogel-Prototyp einbauen. Aber da hilft uns JavaScript, denn wir können einen Enten-
Prototyp erstellen, der vom Vogel-Prototyp erbt.
Joe: Mal sehen, ob ich das richtig verstanden habe. Wir haben einen Entenkonstruktor, der auf
einen Enten-Prototyp verweist. Aber dieser Prototyp, also der Enten-Prototyp, zeigt seinerseits auf
den Vogel-Prototyp, richtig?
Frank: Holla, jetzt schalte mal einen Gang zurück.
Judy: Das kannst du dir so vorstellen, Frank: Angenommen, du erstellst eine Ente und rufst ihre
fly-Methode auf. Was passiert, wenn das Enten-Objekt selbst keine fly-Methode besitzt? Du siehst
im Enten-Prototyp nach, aber auch dort wird die Methode nicht gefunden. Schließlich siehst du im
Vogel-Prototyp nach, von dem der Enten-Prototyp erbt, und dort wird die fly-Methode schließlich
gefunden.
Joe: Und wenn wir die swim-Methode aufrufen, sehen wir in der Enteninstanz nach – nichts zu
finden. Wir sehen im Enten-Prototyp nach, und da ist sie.
Judy: Richtig. Dadurch können wir nicht nur das Verhalten des Enten-Prototyps wiederverwenden,
sondern wir folgen der Kette bei Bedarf bis zum Vogel-Prototyp, um auch ihn zu benutzen.
Joe: Das klingt perfekt, um unseren Hund-Prototyp für die Ausstellungshunde zu erweitern. Wir
wollen doch mal sehen, was wir damit anfangen können.

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.