Hauptmenü

Untermenü

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