Hauptmenü

Untermenü

OOP mit JavaScript - Prototypen - Originäre Objekte

1. Bereits existierende Objekte erweitern

Leider bieten die schon vorgegebenen Methoden von JavaScript nicht die Möglichkeiten, die andere Sprachen haben. Da muss man dann schon mal ein wenig Eigeninitiative zeigen. Greifen wir dazu mal auf die schöne Funktion easter_date von PHP zurück. Die liefert das Datum des Ostersonntags eines x-beliebigen Jahres zurück. Leider bietet uns JavaScript das nicht, also muss man selbst Hand anlegen. Wie es bei Singles so üblich ist.

2. Die Methode easterDate

... muss man sich von Prinzip her so vorstellen.


Date.prototype.easterDate = function()
{
  var easter_date;
 /**
   * Den folgenden Code programmiert mal schön selber!
   * Ich habe keine Lust, da jetzt groß im Kalender rumzuwühlen
   * und das händisch nachzuprogrammieren
  **/
  return easter_date;
}
var datum = new Date;
alert (datum.easterDate());

Erläuterung

Date ist ein bereits existierendes JavaScript-Objekt, das schon über diverse Eigenschaften und Methoden verfügt. Über prototype ergänzen wir es nun um die Methode easterDate. Die hängt zwar nicht im eigentlichen Objekt, aber in dessen Prototype-Referenz. Und darauf greifen Instanz-/Referenzvariablen zu. Das Prinzip kann man auch auf Eigenschaften anwenden.

3. Obacht!

Wenn man ein Objekt um eigene Methoden ergänzt, so geschieht Folgendes. Sie werden zusätzlich in das entsprechende Objekt eingehängt. Das funktioniert eigentlich auch ganz wunderbar, nur in einem Fall kann das zu echten Problemen führen. Nämlich beim Array-Objekt.

Das Problem

... kann man wunderbar sehen, wenn man mit prototype.js arbeitet. Denn in dem Framework geht man so vor. Da werden tatsächlich Eigenschaften und Methoden über prototype in das bereits existierende Objekt eingehängt. Und sobald man ein Array mit einer for...in-Schleife durchlaufen möchte, erlebt man eine gaaaanz böse Überraschung. Das Problem dazu erläutere ich an dieser Stelle. Es geht zwar nicht um prototype.js, aber das Prinzip ist dasselbe.

4. Mein Tipp

Da uns einige vorgegebene Objekte in JavaScript nur sehr wenige Eigenschaften und Methoden bereitstellen, ist es durchaus sinnvoll, sie ein wenig zu ergänzen. Man muss aber höllisch aufpassen! So kann man, wenn man nicht aufpasst, per prototype sehr leicht etwas überschreiben oder aber man erlebt unter Umständen eine böse Überraschung.

Darum mein eindringlicher Rat. Wenn ihr das macht, so überlegt euch genau, was ihr tut. Denn diese Vorgehensweise ist genau so, als ob ihr in PHP direkt am Sprachkern rumwerkelt. Und glaubt mir. Die lassen an solche Dinge keine Dödel ran.

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt