608 Kapitel 13
Die toString-Methode überschreiben
Wenn Sie von einem JavaScript-eigenen Objekt erben, können Sie dessen
Methoden überschreiben. Ein häufiges Anwendungsbeispiel ist die Object-
eigene toString-Methode. Da alle Objekte von Object erben, können sie auch
toString benutzen, um ein Objekt als String auszugeben. Hier ein Beispiel, bei
dem Informationen zu Ihrem Objekt per console.log ausgegeben werden:
Vererbung zu Ihrem Vorteil nutzen
function Robot(name, year, owner) {
this.name = name;
this.year = year;
this.owner = owner;
}
var toy = new Robot("Spielzeug", 2013, "Avary");
console.log(toy.toString());
Wie Sie sehen, ist die eingebaute toString-Methode nicht besonders
gut darin, den Spielzeugroboter in einen String umzuwandeln. Aber
wir können die Methode so überschreiben, dass sie einen speziell auf
Spielzeugroboter zugeschnittenen String ausgibt:
function Robot(name, year, owner) {
// mehr Code hier
}
Robot.prototype.toString = function() {
return this.name + " Roboter gehört " + this.owner;
};
var toy = new Robot("Spielzeug", 2013, "Avary");
console.log(toy.toString());
JavaScript-Konsole
Spielzeug Roboter gehört
Avary
Die von Object geerbte
toString-Methode macht
nicht, was wir wollen.
Viel besser! Jetzt verwenden wir
unsere eigene toString-Methode.
Beachten Sie, dass die toString-Methode auch dann aufgeru-
fen werden kann, wenn Sie nicht direkt darauf zugreifen kön-
nen – etwa bei der Verwendung von +, um einen String und
ein Objekt zu verknüpfen. In diesem Fall benutzt Java Script
toString, um Ihr Objekt in einen String umzuwandeln, bevor
es mit dem anderen String verknüpft wird.
console.log("Roboter ist ein: " + toy);
Das Objekt in toy wird vor seiner Verknüpfung per toString in einen
String umgewandelt. Hat toy die toString-Methode überschrieben,
wird stattdessen die neu definierte Methode verwendet.
durch Überschreiben von eingebautem Verhalten
Spielzeug? Dieser Roboter
läuft auf einem Arduino-
Stack und lässt sich sogar per
JavaScript steuern!
JavaScript-Konsole
[Object object]
Sie sind hier 609
Prototypen verwenden
Gefahrenbereich
Beim Überschreiben von Eigenschaften und Methoden kann man sich schnell
verzetteln. Daher müssen Sie besonders beim Überschreiben von Eigen-
schaften und Methoden aus JavaScript-eigenen Objekten sehr vorsichtig sein.
Schließlich wollen Sie ja nicht das Verhalten von anderem Code verändern,
der sich ebenfalls für bestimmte Aufgaben auf diese Eigenschaften verlässt.
Daher sollten Sie vor dem Überschreiben der Eigenschaften von Object diesen
Sicherheitshinweis lesen. Ansonsten iegt Ihnen Ihr Code möglicherweise ir-
gendwann um die Ohren. (Übersetzung: Es können Programmierfehler auftre-
ten, die sich nur sehr schwer nden lassen.)
Nicht überschreiben
Diese Eigenschaften von Object sollten Sie nicht überschreiben:
Überschreiben erlaubt
Nachdem Sie sich mit Prototypen auskennen und wissen, wie man Eigenschaften
sicher überschreibt, zeigen wir Ihnen jetzt die Eigenschaften von Object, die Sie
überschreiben können:
constructor
hasOwnProperty
isPrototypeOf
propertyIsEnumerable
toString
toLocaleString
valueOf
Die constructor-Eigenschaft verweist auf die mit
dem Prototyp verbundene Konstruktorfunktion.
isPrototypeOf ist eine Methode, mit der Sie herausfinden können,
ob ein Objekt ein Prototyp eines anderen Objekts ist.
Was die Methode hasOwnProperty tut, wissen Sie schon.
Die Eigenschaft propertyIsEnumerable überprüft, ob
auf eine Eigenschaft zugegriffen werden kann, indem
über alle Eigenschaften des Objekts iteriert wird.
toLocaleString funktioniert ähnlich wie toString. Auch diese Methode
konvertiert ein Objekt in einen String. Sie kann überschrieben werden, um
einen lokalisierten (für Ihr Land oder Ihre Sprache spezifischen) String
über ein Objekt zurückzugeben.
valueOf ist eine weitere Methode, die zum Überschreiben gedacht ist. Standard-
mäßig gibt sie einfach das Objekt zurück, an dem die Methode aufgerufen wurde.
Aber das können Sie überschreiben und im Prinzip jeden beliebigen Wert zurückgeben.

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.