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