V. 7.2.1 (19.08.10)

Infos

Download

Theorie OOP mit JavaScript

Schnellsuche

JavaScript - OOP mit JavaScript - Prototypen

1. Das Konzept

Eingangs erwähnte ich schon, dass JavaScript zu den prototypenbasierten Sprachen zählt. Aber um was genau handelt es sich dabei eigentlich? Nun bei dieser Form der Programmierung will man den Entwicklern größtmögliche Freiheiten zugestehen und sie nicht mit Dingen quälen, wie sie in anderen Sprachen üblich sind. Ich gehe jetzt nur auf das Prinzip ein und nicht auf die Vor- und Nachteile.

Prototyping

... bedeutet einfach gesagt, dass man einer "Klasse" jederzeit Eigenschaften und Methoden hinzufügen kann. Die gelten dann für alle daraus erzeugten Objekte. Das ist die Form von Vererbung, wie sie JavaScript versteht.

2. Ein Beispiel

Wir basteln uns mal eine kleine "Klasse", das uns nett begrüßt. Ich denke, den folgenden Code brauche ich nicht mehr zu erläutern. Das sollte mittlerweile jedem klar sein. Das Ergebnis ist beim Aufruf ein freundliches 'Hallo'.


function meineKlasse ()
{
  var 
nett   'Hallo';  
  
this.hallo = function ()
  {
    
alert (nett);
  }

var 
obj = new meineKlasse;
obj.hallo();

Da uns das Prototypen-Konzept von JavaScript aber sehr viele Freiheiten lässt, kann man nun meineKlasse jederzeit um Eigenschaften und Methoden erweitern. Dazu reicht folgender Code aus:


// Eigenschaft hinzufügen 
meineKlasse.prototype.nicht_nett 'L***ck mich!';
// Methode hinzufügen
meineKlasse.prototype.ziehLeine  = function ()
{
  
alert (this.nicht_nett);
}
var 
obj = new meineKlasse;
obj.ziehLeine();

Erläuterung

Mit dem Schlüsselwort prototype fügt man wie schon gesagt, einer "Klasse" Eigenschaften und Methoden hinzu. Die sind dann in allen daraus erzeugten Objekten verfügbar. Man muss sich das vorstellen, als ob man das so schreibt:


function meineKlasse ()
{
  
this.nicht_nett 'L***ck mich!';
  
this.ziehLeine  = function ()
  {
    
alert (this.nicht_nett);
  }
}

3. Weitere Möglichkeiten

Wer jetzt denkt, dass man eine schon vorhandene Methode um eine weitere ergänzen kann (siehe dazu auch Verschachtelungen), der ist auf dem Holzweg. Denn bei folgendem Beispiel wird die bereits existierende Methode überschrieben, also neu aufgebaut.


meineKlasse.prototype.ziehLeine = function ()
{
  
this.checkUser = function (user)
  {
    if (
'Peter Kropff' == user)
    {
      
alert ('Verp***s dich! Armleuchter!');
    }
  }
}

weiter zum nächsten Abschnitt