598 Kapitel 13
Einen Ausstellungshund erstellen
function ShowDog(name, breed, weight, handler) {
this.name = name;
this.breed = breed;
this.weight = weight;
this.handler = handler;
}
ShowDog.prototype = new Dog();
Showdog.prototype.league = "Webville";
ShowDog.prototype.stack = function() {
console.log("Aufstellung (stack)");
};
ShowDog.prototype.bait = function() {
console.log("Ködern (bait)");
};
ShowDog.prototype.gait = function(kind) {
console.log(kind + "e");
};
ShowDog.prototype.groom = function() {
console.log("Hundefrisör (groom)");
};
var scotty = new ShowDog("Scotty", "Scottish Terrier", 7.5, "Cookie");
Eine Ausstellungshunde-Instanz erzeugen
Jetzt fehlt nur noch eine Sache: Erstellen Sie eine Instanz von ShowDog. Sie
erbt die Eigenschaften und Methoden vom Prototyp für Ausstellungshunde.
Und weil der Prototyp für Ausstellungshunde eine Instanz von Dog ist, erbt
der neue Ausstellungshund außerdem alle hündischen Verhaltensweisen und
Eigenschaften vom Hund-Prototyp. Er kann also wie alle anderen Hunde
bellen, rennen und mit dem Schwanz wedeln.
Hier sind unser bisheriger Code sowie die Anweisungen, um die Instanz zu
erzeugen:
Und hier haben wir unsere Ausstellungshunde-
Instanz. Sie erbt vom Prototyp für
Ausstellungshunde, der wiederum vom Hund-
Prototyp erbt. Genau das wollten wir. Ein
Blick auf Seite 592 zeigt, dass unsere
Prototypenkette jetzt vollständig ist.
Dies ist Scotty, unser
neuer Ausstellungshund.
species: "Hund"
Dog Prototype
bark()
run()
wag()
ShowDog Prototype
stack()
bait()
gait()
groom()
league: "Webville"
name: "Spot"
breed: "Chihuahua"
weight: 10
Dog
name: "Fluffy"
breed: "Poodle"
weight: 30
Dog
name: "Fido"
breed: "Mischling"
weight: 17
Dog
name: "Scotty"
breed:
"Scottish Terrier"
weight: 7.5
handler: "Cookie"
ShowDog
Sie sind hier 599
Prototypen verwenden
Probefahrt für Ausstellungshunde
scotty.stack();
scotty.bark();
console.log(scotty.league);
console.log(scotty.species);
Nehmen Sie Ihren Code von der vorigen Seite und fügen Sie den
unten stehenden Code zur Qualitätssicherung hinzu, um scotty
sorgfältig zu testen. Und da Sie schon dabei sind: Fügen Sie ruhig ein
paar eigene Ausstellungshunde hinzu und testen Sie sie gleich mit.
JavaScript-Konsole
Aufstellung (stack)
Scotty macht Yip!
Webville
Hund
Sie sind dran. Erweitern Sie die Produktpalette der ObjectsRUs-Roboter um Weltraumroboter (vom
Typ SpaceRobot). Die neuen Maschinen sollten natürlich alles können, was »normale« Roboter
auch können. Zudem brauchen Weltraumroboter spezielle Verhaltensweisen. Wir haben den unten
stehenden Code schon für Sie begonnen. Stellen Sie ihn fertig und testen Sie ihn. Überprüfen Sie
Ihre Antwort am Ende des Kapitels, bevor Sie weiterlesen.
function SpaceRobot(name, year, owner, homePlanet) {
}
SpaceRobot.prototype = new ____________;
___________________.speak = function() {
alert(this.name + " sagt: Sir, wenn ich meine Meinung äußern dürfte …");
};
___________________.pilot = function() {
alert(this.name + " sagt: Schubdüsen? Sind die wichtig?");
};
var c3po = new SpaceRobot("C3PO", 1977, "Luke Skywalker", "Tatooine");
c3po.speak();
c3po.pilot();
console.log(c3po.name + " wurde hergestellt von " + c3po.maker);
var simon = new SpaceRobot("Simon", 2009, "Carla Diana", "Erde");
simon.makeCoffee();
simon.blinkLights();
simon.speak();
Hier ist unsere
Ausgabe.
Übung
600 Kapitel 13
Übung zum Testen der Objektkonstruktoren
Betrachten wir die von uns erzeugten Hunde mal etwas genauer. Wir ha-
ben Fido schon einmal untersucht und wissen, dass er wirklich ein Hund
ist. Jetzt wollen wir überprüfen, ob er auch ein Ausstellungshund ist
(auch wenn wir das nicht glauben). Und was ist mit Scotty? Wir vermuten,
dass er mit Sicherheit ein Ausstellungshund ist, aber ist er auch ein Hund?
Wir sind nicht sicher. Und da wir schon dabei sind, testen wir auch gleich
die Konstruktoren für Fido und Scotty …
var fido = new Dog("Fido", "Mischling", 17);
if (fido instanceof Dog) {
console.log("Fido ist ein Hund (Dog)");
}
if (fido instanceof ShowDog) {
console.log("Fido ist ein Ausstellungshund (ShowDog)");
}
var scotty = new ShowDog("Scotty", "Scottish Terrier", 7.5, "Cookie");
if (scotty instanceof Dog) {
console.log("Scotty ist ein Hund (Dog)");
}
if (scotty instanceof ShowDog) {
console.log("Scotty ist ein Ausstellungshund (ShowDog)");
}
console.log("Konstruktor für Fido ist " + fido.constructor);
console.log("Konstruktor für Scotty ist " + scotty.constructor);
Führen Sie diesen Code aus
und notieren Sie unten Ihre
Ausgaben.
Hier kommen Ihre Ausgaben hin:
Sie finden unsere Ausgaben
auf der nächsten Seite.
JavaScript-Konsole
Übung

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.