Sie sind hier 539
Fortgeschrittene Objektkonstruktion
Verlassen Sie sich nicht einfach auf Objektliterale
Über die Vor- und Nachteile von Objektliteralen und Objektkonstruktoren haben wir uns schon
unterhalten. Dabei haben wir gesagt, dass Objektliterale auch sehr nützlich sein können. Ein gutes
Beispiel haben wir Ihnen aber noch nicht gezeigt. Wir wollen den Konstruktorcode für Car ein
wenig umbauen, damit Sie sehen, wo Objektliterale für mehr Sauberkeit im Code sorgen können
und ihn dabei auch noch besser les- und wartbar machen.
Sehen wir uns hier noch einmal den Car-Konstruktor an und überlegen wir, wie wir ihn etwas
sauberer aufbauen können.
function Car(make, model, year, color, passengers, convertible, mileage) {
this.make = make;
this.model = model;
this.year = year;
this.color = color;
this.passengers = passengers;
this.convertible = convertible;
this.mileage = mileage;
this.started = false;
this.start = function() {
this.started = true;
};
// hier stehen die anderen Methoden
}
Hier benutzen wir eine ganze Menge
Parameter. Wir haben sieben gezählt.
Und wenn wir den Code zum Aufruf
dieses Konstruktors schreiben, müssen wir
sicherstellen, dass alle Argumente in der
korrekten Reihenfolge übergeben werden.
Je mehr wir hinzufügen, desto schlechter ist die Lesbarkeit
(und Sie können sicher sein, dass die Zahl der Parameter mit
den Anforderungen an die Objekte steigen wird).
Das Problem ist, dass die vielen Parameter im Car-Konstruktor den Code schwer
lesbar und wartbar machen. Außerdem ist es schwierig, Code zu schreiben, der
diesen Konstruktor aufruft. Das scheint nur eine kleine Unannehmlichkeit zu sein.
Es verursacht aber mehr Fehler, als Sie denken, und nicht nur das. Die Fehler sind
hartnäckig und schwer zu finden.
Allerdings gibt es eine übliche Vorgehensweise, die wir bei der Übergabe dieser ganzen
Argumente anwenden können. Sie kann für alle Funktionen – ob Konstruktor oder nicht
– benutzt werden und funktioniert so: Packen Sie alle Argumente in ein Objektliteral,
das Sie dann an ihre Funktion übergeben. Dadurch werden alle Ihre Werte in einem
gemeinsamen Container (dem literalen Objekt) übergeben, und Sie brauchen sich um
die Reihenfolge der Argumente und Parameter nicht mehr zu kümmern.
Lassen Sie uns den Code für den Aufruf des Car-Konstruktors neu schreiben. Danach
bauen wir den Konstruktorcode etwas um, damit wir verstehen, was hier passiert.
Der Fehler ist schwer zu finden,
weil der Code auch dann syntaktisch
korrekt ist, wenn zwei Variablen
vertauscht wurden. Er funktioniert
aber nicht richtig, eben weil zwei
Variablen vertauscht wurden.
Oder es bricht ein
großes Chaos aus, wenn
Sie einen Wert weglassen!

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.