OOP mit JavaScript - Prototypen - Einfache Erweiterung
1. Wir bauen einen Panzer
Damit ihr ein Bild davon bekommt, wie Prototypen funktionieren gehen wir folgendermaßen vor. Zunächst mal definieren wir einen Panzerkonstruktor mit einer öffentlichen Eigenschaft und Methode.
function Panzer()
{
this.ps = 400;
this.fahren = function()
{
alert ('Brumm brumm mit ' + this.ps + ' PS');
}
}
2. Der Prototyp
Da wir bis jetzt noch keinen richtigen Kampfpanzer haben, erweitern wir unser Modell ein wenig. Und das geht so.
Panzer.prototype.turm = true;
Panzer.prototype.kanone = 120;
Panzer.prototype.schiessen = function()
{
if (this.kanone && true == this.turm) {
alert ('Bumm bumm mit ' + this.kanone + 'mm-Kanone');
}
}
Unser Panzer-Prototyp verfügt also nun über die Eigenschaften ps
, turm
und kanone
sowie
über die beiden Methoden fahren
und schiessen
. Jetzt kann man daraus ein Objekt erzeugen und ein paar Dinge
damit machen.
var kampfpanzer = new Panzer;
kampfpanzer.fahren();
kampfpanzer.schiessen();
Ein Hinweis
Die Methode schiessen
bezeichnet man nur als öffentliche Methode. Warum? Ganz einfach, weil sie keinen Zugriff auf die
privaten Eigenschaften und Methoden von Panzer
hat. Wenn es sie denn in diesem Beispiel gäbe. Das unterscheidet sie
von den privilegierten öffentlichen Methoden. Das aber nur am Rande.
3. Und was soll das jetzt?
Werden sich jetzt viele fragen. Und damit haben sie auch völlig Recht. In diesem Beispiel hätte man getrost alle Eigenschaften und Methoden
im Konstruktor Panzer
bündeln können. Das Ergebnis wäre dasselbe gewesen. Außerdem kann man keine anderen Panzer daraus bauen,
die keine Kanone haben, also zum Beispiel einen Pionierpanzer.
Fazit
Ihr seht also selber schon, dass diese einfache Form des Prototypings überflüssig wie ein Kropf(f) ist, weil völlig sinnlos. Ich habe euch das hier auch nur gezeigt, um euch das Prinzip zu erklären. Wirklich sinnvoll wird das erst, wenn man Methoden und Eigenschaften erweitern oder anpassen möchte.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt