Hauptmenü

Untermenü

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