Sie sind hier � 541
Fortgeschrittene Objektkonstruktion
var cadiParams = {make: "GM",
model: "Cadillac",
year: 1955,
color: "Bräunlich",
passengers: 5,
convertible: false,
mileage: 12892};
var cadi = new Car(cadiParams);
function Car(CadiParams) {
this.make = CadiParams.make;
this.model = CadiParams.model;
this.year = CadiParams.year;
this.color = CadiParams.color;
this.passengers = CadiParams.passengers;
this.convertible = CadiParams.convertible;
this.mileage = CadiParams.mileage;
this.started = false;
this.start = function() {
this.started = true;
};
this.stop = function() {
this.started = false;
};
this.drive = function() {
if (this.started) {
alert("Wrumm wrumm!");
} else {
alert("Sie müssen zuerst den Motor starten.");
}
};
}
Den Car-Konstruktor umbauen
Jetzt müssen Sie die einzelnen Parameter im Car-Konstruktor entfernen und
durch die Eigenschaften des übergebenen Objekts austauschen. Wir nennen den
Parameter params. Außerdem muss der Code für dieses Objekt noch ein wenig
angepasst werden, und zwar so:
Danach ersetzen wir jede Referenz
auf einen Parameter durch die
passende Eigenschaft des an die
Funktion übergebenen Objekts.
In unseren Methoden benutzen wir die Parameter nicht
direkt. Das wäre auch nicht sinnvoll, da wir immer die
Objekteigenschaften (über die this-Variable) verwenden
wollen. Daher gibt es keine Änderungen an diesem Code.
Das Wichtigste zuerst. Wir ersetzen die sieben
Argumente für den Car-Konstruktor durch
einen Parameter für das übergebene Objekt.
Hier gibt es keine Änderungen. Wir haben
einfach das Objektliteral und den Car-
Konstruktor von der vorigen Seite noch
einmal aufgeschrieben.
Probefahrt
Aktualisieren Sie den Cadil-
lac und die anderen Autos
und testen Sie Ihren Code.
cadi.start();
cadi.drive();
cadi.drive();
cadi.stop();
542 Kapitel 12
Eine Frage des Typs
Kopieren Sie die Konstruktoren für Car und Dog in eine gemeinsame Datei
und fügen Sie den unten stehenden Code hinzu. Führen Sie den Code aus
und notieren Sie sich die Ausgaben.
var limoParams = {make: "Webville Motors",
model: "Limousine",
year: 1983,
color: "schwarz",
passengers: 12,
convertible: true,
mileage: 21120};
var limo = new Car(limoParams);
var limoDog = new Dog("Rhapsody In Blue", "Pudel", 40);
console.log(limo.make + " " + limo.model + " ist ein " + typeof limo);
console.log(limoDog.name + " ist ein " + typeof limoDog);
Schreiben Sie Ihre
Ausgaben hier hin.
F:
Was macht typeof noch mal?
A:
Der typeof-Operator gibt den Typ seines Operanden zurück.
Wenn Sie ihm einen String übergeben, ist der Rückgabewert "string",
übergeben Sie ihm ein Objekt, lautet er "object". Sie können typeof
beliebige Werttypen übergeben: Zahlen, Strings, Boolesche Werte
und komplexe Typen wie Objekte oder Funktionen. Spezifischer kann
typeof aber nicht sein. Es kann Ihnen nicht sagen, ob ein Objekt ein
Hund oder ein Auto ist.
F:
Wenn typeof mir nicht sagen kann, ob mein Objekt ein
Hund oder ein Auto ist, wie kriege ich das dann heraus?
A: Viele andere objektorientierte Sprachen wie Java oder C++
wissen ziemlich genau über ihre Objekttypen Bescheid. In diesen
Sprachen können Sie ein Objekt untersuchen und seinen exakten Typ
ermitteln. In JavaScript werden Objekte und ihre Typen lockerer und
dynamischer gehandhabt. Deshalb glauben viele Entwickler auch,
das Objektsystem von JavaScript sei nicht so mächtig. In Wahrheit
ist es schlicht allgemeiner und flexibler. Durch das dynamischere
Typensystem in JavaScript ist es etwas schwieriger, herauszufinden,
ob ein Objekt ein Hund oder ein Auto ist. Das hängt davon ab, wie
Sie sich einen Hund oder ein Auto vorstellen. Allerdings gibt es einen
anderen Operator, der uns ein paar Informationen liefern kann …
lesen Sie also weiter.
Angenommen, Sie möchten wissen, welchen Typ ein übergebenes
Objekt hat (ist es ein Auto? ein Hund? Superman?), oder Sie
wollen herausfinden, ob es den gleichen Typ wie ein anderes
Objekt hat. Könnte der typeof-Operator Ihnen dabei helfen?
Sie finden den Dog-
Konstruktor auf Seite 530.
Übung
Kopf-
nuss
Es gibt keine
Dummen Fragen
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.