OOP mit JavaScript - Prototypen - Zugriffsrechte Teil 1
1. Rauf und runter, hin und her
In JavaScript kann (fast) alles auf alle öffentlichen Eigenschaften und Methoden zugreifen. Das ist genau so, wie man es zum Beispiel aus Sprachen wie PHP kennt. Die Richtung ist also bidirektional.
Ein Beispiel
Hier geht es diesmal nur ums Rumballern. Und das muss jeder Panzer können, ganz gleich um welchen Typ es sich handelt. Darum bauen wir mal eine Methode ein, wo man mit einem MG schießen kann.
function Panzer()
{
this.mgSchiessen = function()
{
if (this.mg) {
alert ('Ratatat mit ' + this.mg + 'mm-MG');
}
}
}
2. Die Eigenschaft
... mg
definieren wir aber in den einzelnen Panzertypen, da die MGs dort ein unterschiedliches Kaliber haben sollen. Der
Kampfpanzer
bekommt einen dicken Ballermann, während der Pionierpanzer
doch eher schwach bestückt ist.
function Kampfpanzer()
{
this.mg = 7.62;
}
function SpezialPanzer()
{
}
function Pionierpanzer()
{
this.mg = 5.56;
}
3. Der Zugriff
Hier setzen wir zunächst wie gehabt das Prototyping ein
Kampfpanzer.prototype = new Panzer;
Pionierpanzer.prototype = new Panzer;
SpezialPanzer.prototype = new Kampfpanzer;
... und rotzen dann richtig los mit
var supipanzer = new SpezialPanzer;
supipanzer.mgSchiessen();
var piopanzer = new Pionierpanzer;
piopanzer.mgSchiessen();
Erläuterung
Die Objekte, die aus SpezialPanzer
und Pionierpanzer
erzeugt wurden, können ohne Probleme auf die Methode
mgSchiessen
des Konstruktors Panzer
zugreifen. Und der holt sich die Eigenschaft mg
aus
seinen "Kind"-Konstruktoren. Gut, letztere Bezeichnung ist nicht ganz so glücklich, ihr solltet aber wissen, was gemeint ist.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt