Hauptmenü

Untermenü

OOP mit JavaScript - Konstruktorfunktionen - Zugriffsrechte

1. Ein Wort zuvor

Hier geht es erst mal nur um die einfachen Dinge, die ihr wohl schon aus anderen Sprachen kennt. Alles andere wie Closures, anonyme und globale Funktionen oder die Seltsamkeiten von this kommen noch peu à peu auf euch zu.

2. Zugriffsrechte eines Objekts

Wenn man ein Objekt aus einer Konstruktorfunktion erzeugt, so hat das nur Zugriff auf die öffentlichen Eigenschaften und Methoden. Alles andere ist verboten.


function Konstruktor()
{
  this.eigenschaft 'bla';
  this.methode     = function()
  {
    alert ('hallo');
  }
}
var obj = new Konstruktor;
alert (obj.eigenschaft);
obj.methode();

3. Privilegierte öffentliche Methoden

Die dürfen so ziemlich alles. Sie können sowohl auf öffentliche und "private" Eigenschaften oder Methoden zugreifen, auf Objektliterale, "Variablenfunktion" oder "globale" Methoden/Funktionen. Bei öffentlichen Methoden und Eigenschaften muss man darauf achten, das this voranzustellen. Ein kleines Beispiel dazu.


function Konstruktor()
{
  var privat       'blubb';
  this.oeffentlich 'blubber';
  this.methode     = function()
  {
    alert (this.oeffentlich);
    alert (privat);
    privateMethode();
  }
  function privateMethode()
  {
    alert ('hallo');
  }
}
var obj = new Konstruktor;
obj.methode();

4. "Private", "globale" und anonyme Methoden/Funktionen

... können erst mal nur auf Methoden zugreifen, die von ihresgleichen sind. Und ein direkter Zugriff auf Eigenschaften ist nur dann möglich, wenn die ebenfalls privat sind. Ach ja, das folgenden Beispiel kann so nicht funktionieren, da es keine öffentliche Methode gibt, die all die privaten aufruft. Die müsst ihr aber hier selber einbauen (s.o.).


function Konstruktor()
{
  var privat 'blubb';
  function privateMethode()
  {
    alert (privat);
  }
  var anonymeMethode = function()
  {
    globaleMethode();
  }
  globaleMethode = function()
  {
    privateMethode()
  }
}

Es gibt zwar einen Weg, auch auf öffentliche Eigenschaften und Methoden zuzugreifen, aber leider hält da JavaScript eine Überraschung für uns auf Lager. Und zu der komme ich jetzt.

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