530 Kapitel 12
Einen Kontruktor mit Methoden versehen
Konstruktoren können auch Methoden enthalten
Die mit dem Dog-Konstruktor erzeugten Objekte entsprechen vollkommen den Objekten, die
wir früher in diesem Buch erstellt haben – außer dass unsere neu erzeugten Hunde nicht bellen
können (weil sie keine bark-Methode besitzen). Das lässt sich aber einfach beheben. Neben der
Definition von Eigenschaften können wir im Konstruktor auch Methoden einrichten. Wir wollen
den Code so erweitern, dass die Objekte die gewünschte bark-Methode erhalten:
function Dog(name, breed, weight) {
this.name = name;
this.breed = breed;
this.weight = weight;
this.bark = function() {
if (this.weight > 25) {
alert(this.name + " macht Wuff!");
} else {
alert(this.name + " macht Yip!");
}
};
}
Um die bark-Methode einzubauen,
weisen wir der Eigenschaft this.
bark einfach eine Funktion (in
diesem Fall eine anonyme) zu.
Nicht jedes dog-Objekt
wird auch eine aufrufbare
bark-Methode besitzen.
Wie bei den in der Vergangenheit erstellten Objekten
benutzen wir this, um das Objekt zu referenzieren,
an dem die Methode aufgerufen wurde.
var fido = new Dog("Fido", "Mischling", 17);
var fluffy = new Dog("Fluffy", "Pudel", 15);
var spot = new Dog("Spot", "Chihuahua", 5);
var dogs = [fido, fluffy, spot];
for (var i = 0; i < dogs.length; i++) {
dogs[i].bark();
}
Ein kleiner Probelauf für die bark-Methode
Genug Gerede über Konstruktoren. Wir wollen den Code
jetzt in eine HTML-Seite einbauen. Um ihn zu testen, fügen
Sie die unten stehenden Anweisungen hinzu.
Sorgen Sie dafür, dass die
dog-Objekte wie erwartet
bellen (bark).
Übrigens sind
Methoden in
Objekten auch nur
Eigenschaften,
denen einfach eine
Funktion zugewiesen
wurde.
Sie sind hier 531
Fortgeschrittene Objektkonstruktion
Wir haben einen Konstruktor zur Herstellung verschiedener
Kaffeegetränke, dem die nötigen Methoden fehlen.
Wir brauchen eine getSize-Methode, die abhängig von der
Bechergröße einen passenden String zurückgibt:
0,25 l entspricht klein
0,35 l entspricht mittel
0,5 l entspricht groß
Außerdem brauchen wir eine toString-Methode, die einen String zurückgibt, der die
Bestellung enthält, z. B.: »Sie haben einen großen House Blend bestellt.«
Schreiben Sie Ihren Code unten auf und testen Sie ihn im Browser. Versuchen Sie auch,
den Kaffee für verschiedene Bechergrößen herzustellen. Vergessen Sie nicht, dass das
Dezimalkomma für Zahlen mit Nachkommastellen in JavaScript durch einen Punkt (.) ersetzt
wird. Überprüfen Sie Ihre Antwort, bevor Sie weiterlesen.
function Coffee(roast, ounces) {
this.roast = roast;
this.ounces = ounces;
}
var houseBlend = new Coffee("House Blend", 0.35);
console.log(houseBlend.toString());
var darkRoast = new Coffee("Dark Roast", 0.5);
console.log(darkRoast.toString());
Schreiben Sie die zwei
Methoden für diesen
Konstruktor hier hin.
JavaScript-Konsole
Sie haben einen mittleren
Medium Blend bestellt.
Sie haben einen großen Dark
Roast bestellt.
Hier ist unsere
Ausgabe. Ihre sollte
ähnlich aussehen.
Ü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.