OOP mit JavaScript - Konstruktorfunktionen - Methoden
1. Tohuwabohu
Im Gegensatz zu anderen Sprachen bietet uns JavaScript eine Fülle von verschiedenen Methoden, die man in einer Konstruktorfunktion einsetzen kann. Genauer gesagt sind es deren fünf. Als da wären folgende.
2. Methoden in Objektliteralen
Dazu sage ich jetzt nichts mehr. Das Prinzip ist dasselbe wie bei Eigenschaften aus dem vorherigen Abschnitt.
3. Privilegierte öffentliche Methoden
Sie werden genau so deklariert wie die öffentlichen Eigenschaften, also mit dem this
davor. Auf sie kann auch ein Objekt
zugreifen, das aus der Konstruktorfunktion erzeugt worden ist. Es gibt auch noch "normale" öffentliche Methoden, aber das erfahrt ihr
beim Thema Prototypen.
function Konstruktor()
{
this.methode = function()
{
...
}
}
4. "Private" Methoden
Sie werden wie ganz normale Funktionen erzeugt.
function Konstruktor()
{
function methode()
{
...
}
}
5. "Globale" Methoden
Auch wenn viele Leute sagen, dass es den Ausdruck in diesem Zusammenhang garnicht gibt, so verwende ich ihn trotzdem. Dabei dreht man die Notation der privaten Methode einfach um. Auf was ihr hier aber unbedingt achten müsst, zeige ich euch gleich unter dem Abschnitt Besonderheiten.
function Konstruktor()
{
methode = function()
{
...
}
}
6. "Variablenfunktion"
Ehrlich gesagt habe ich keine Ahnung, wie das wirklich heißt. Aber ich bin im Moment zu faul, nach der richtigen Bezeichnung zu suchen. Zumal
ich mich dann wieder durch zigtausend Seiten im Internet wühlen muss, um die Spreu vom Weizen zu trennen. Egal, hier wird einfach eine "globale"
Methode genommen und ein var
vorangestellt.
function Konstruktor()
{
var methode = function()
{
...
}
}
Ein Hinweis
Bei dieser "Funktion/Methode" wird soweit ich das verstanden habe, die Referenz einer anonymen Funktion/Methode in einer Variable abgespeichert. Wenn ich mich irre, so sagt mir einfach Bescheid.
Feinheiten
Normalerweise werden Funktionen/Methoden sofort vom Parser erfasst, auch wenn der Aufruf vorher stattfindet.
// ergibt "function"
alert (typeof bla);
function bla() { }
Bei einer "Variablenfunktion" kann dies allerdings immer erst dann geschehen, wenn sie vorher(!) "initialisiert" wurde.
// ergibt "undefined
alert (typeof bla);
var bla = function() { }
// ergibt function"
alert (typeof bla);
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt