584 Kapitel 13
Den Prototyp zur Definition von Startwerten verwenden
Dog.prototype.sitting = false;
Dog.prototype.sit = function() {
if (this.sitting) {
console.log(this.name + " sitzt bereits");
} else {
this.sitting = true;
console.log(this.name + " hat sich gerade gesetzt");
}
};
Eine interessantere Implementierung der sit-Methode
Jetzt wollen wir die Sache etwas interessanter machen: Die Hunde beginnen im Zustand
des Nicht-Sitzens (sprich, sie stehen). Sitzt ein Hund beim Aufruf von sit noch nicht,
sorgen wir dafür, dass er sich hinsetzt. Ansonsten informieren wir den Benutzer davon,
dass der Hund bereits sitzt. Hierfür brauchen wir eine zusätzliche Eigenschaft mit dem
Namen sitting, die den aktuellen Zustand (sitzt oder steht) speichert. Hier der Code:
Da sitting im Prototyp den
Wert false hat, sitzt zu
Beginn keiner der Hunde.
Anschließend überprüfen wir in
der sit-Methode, ob der Hund
sitzt oder nicht. Bei der ersten
Überprüfung von this.sitting sehen
wir den Wert des Hund-Prototyps.
Sitzt der Hund noch nicht, melden wir, dass er sich
gerade hingesetzt hat, und weisen this.sitting den Wert
true zu. Hierdurch wird die Eigenschaft des Prototyps
überschrieben und der Wert in der Instanz definiert.
Das wollen wir nun einmal ausprobieren. Aktualisieren Sie Ihren Code, indem Sie
die neue Eigenschaft und die Implementierung von sit einbauen. Beim Probelauf
können Sie sehen, dass sich Barnaby und Spot jetzt setzen können, wobei jeder
Hund seine sitting-Eigenschaft selbst verwaltet:
barnaby.sit()
barnaby.sit()
spot.sit()
spot.sit()
JavaScript-Konsole
Barnaby hat sich gerade gesetzt
Barnaby sitzt bereits
Spot hat sich gerade gesetzt
Spot sitzt bereits
Probefahrt für die neue sit-Methode
Wir beginnen mit der sitting-Eigenschaft im Prototyp.
Beachten Sie, dass die Instanz jetzt ihre eigene
sitting-Eigenschaft mit dem Wert true hat.
Sitzt der Hund bereits, geben wir
eine entsprechende Meldung aus.
Das Interessante an diesem Code ist, dass eine Hund-Instanz zu Beginn ihres Lebens den
Standardwert false für die Eigenschaft sitting erbt. Sobald die sit-Methode aufge-
rufen wird, definiert die Hund-Instanz jedoch ihren eigenen Wert für sitting. Da-
durch wird in der Instanz eine neue Eigenschaft angelegt, die die vom Prototyp geerbte
sitting-Eigenschaft überschreibt. Auf diese Weise können wir einen Standardwert für
alle Hunde definieren, der bei Bedarf für jeden Hund angepasst werden kann.

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.