566 Kapitel 13
Ein genauer Blick auf Objekte
Wiedersehen mit Objektkonstruktoren: Der Code wird
wiederverwendet, aber ist das wirklich effizient?
Erinnern Sie sich an den Dog-Konstruktor aus dem letzten Kapitel? Lassen Sie uns noch
einmal sehen, was uns seine Verwendung bringt:
name: "Fido"
breed: "Mischling"
weight: 17
Dog
bark()
name: "Fluffy"
breed: "Pudel"
weight: 15
Dog
bark()
name: "Spot"
breed: "Chihuahua"
weight: 5
Dog
bark()
function bark() {
// Code zum Bellen
}
function bark() {
// Code zum Bellen
}
function bark() {
// Code zum Bellen
}
function Dog(name, breed, weight) {
this.name = name;
this.breed = breed;
this.weight = weight;
this.bark = function() {
if (this.weight > 12.5) {
console.log(this.name + " macht Wuff!");
} else {
console.log(this.name + " macht Yip!");
}
};
}
Und hier hat jedes Ob-
jekt eine Referenz auf
die bark-Funktion.
Hier haben wir drei
verschiedene Hunde-
Objekte, jedes
mit individuellen
Eigenschaftswerten.
Jeder Hund hat seine eigenen Werte und
einen konsistenten Satz an Eigenschaften.
var fido = new Dog("Fido", "Mischling", 17);
var fluffy = new Dog("Fluffy", "Pudel", 15);
var spot = new Dog("Spot", "Chihuahua", 5);
Noch besser, der Code wird für
alle Hunde wiederverwendet.
Durch den Gebrauch des Konstruktors bekommen wir ein hübsches konsistentes Hunde-Objekt,
das wir nach Bedarf anpassen können. Außerdem können wir die darin definierten Methoden
benutzen (hier ist es nur eine: bark). Dazu erhält jeder Hund den gleichen Code vom Konstruktor,
was uns eine Menge Kopfschmerzen erspart, sollten sich die Dinge in der Zukunft ändern. Jetzt
wollen wir aber sehen, was zur Laufzeit bei der Auswertung des Codes passiert:
Und jeder Hund hat seine
eigene bark-Methode.
Dieser Code sorgt für die Erstellung von drei Hunde-Objekten. Wir wollen unsere neuen
Objektdiagramme benutzen, um zu sehen, was hier passiert:
Einen Augenblick. Jeder
Hund hat seine eigene
bark-Methode. Alle tun
das Gleiche, aber jeder
Hund besitzt eine eigene
Kopie der Methode.
Auf Codeebene funktioniert
die Wiederverwendung.
Während der Laufzeit wird
die Funktion aber offenbar
für jeden Hund dupliziert.
Sie sind hier 567
Prototypen verwenden
Der Browser.
He, Sie da oben!
Dank Ihres Dog-Konstruktors
habe ich den Hundemarkt komplett
aufgerollt. Sehen Sie mal …
Wäre dies ein Mobilgerät,
wäre ich längst tot.
Diese ganzen Extramethoden
bringen mich um. Bald ist mein
Arbeitsspeicher voll, und das
Spiel ist aus!

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.