Hauptmenü

Untermenü

OOP mit JavaScript - Objektliterale

1. Schreibweisen

Im vorherigen Abschnitt habe ich euch gezeigt, wie man Objekte auch ohne Klasse in JavaScript erzeugen kann. Und was jetzt kommt, ist eigentlich nur eine andere Schreibweise. Anstelle von


var obj         = new Object;
obj.eigenschaft 'blubb';
obj.methode     = function()
{  
  alert (this.eigenschaft);
}

kann man das auch so schreiben.


var obj =
{
  eigenschaft 'blubb',
  methode     : function()
  {  
    alert (this.eigenschaft);
  }
}

Erläuterung

Bei dieser Schreibweise erzeugt man ein Objekt durch var obj = { ... }. Damit wird es sozusagen "eingezäunt". Die Eigenschaften und Methoden werden ganz normal durch einen Namen deklariert. Danach folgt ein Doppelpunkt.

Wichtig

Bei den Eigenschaften muss immer ein Wert angegeben oder ein neues Objekt erzeugt werden. Notfalls arbeitet man mit einem Leerstring.


eigenschaft_1 'blubber',
eigenschaft_2 '',
eigenschaft_3 : new Array(),
eigenschaft_4 : new Date(),

2. Ein beliebter Fehler

Hinter jeder Eigenschaft und Methode muss ein Komma stehen. Das entspricht bei dieser Schreibweise dem sonst üblichen Semikolon. Letzteres kann man teilweise weglassen, aber hier führt ein fehlendes Komma unweigerlich zu einer Fehlermeldung.

Einzige Ausnahme

Bei der letzten Anweisung in Form einer Eigenschaft oder Methode kann man es weglassen. Aber wirklich nur bei der Allerallerletzten! Und wenn man (was Gott verhüten möge) den Internet Explorer 6 oder 7 noch unterstützt, so muss man es weglassen! Denn sonst zickt der rum.

3. Zugriffsrechte

Innerhalb des Objektes gibt es wie schon gesagt zwei Zugriffsmöglichkeiten. Entweder über den internen Zeiger this oder über den Referenz-/Instanznamen. Mein Tipp dazu, nehmt this. Da ist der Code sauberer, da man sofort erkennt, dass es sich um die Eigenschaften und Methoden des jeweiligen Objektes handelt.


var obj =
{
  eigenschaft 'blubb',
  methode_1   : function()
  {  
    alert (this.eigenschaft);
  },
  methode_2   : function()
  {  
    this.methode_1();
  }
}
obj.methode_2();

Objektgebundenheit

Hier gilt dasselbe, was ich schon an dieser Stelle unter Punkt 4 gesagt habe. Die Eigenschaften und Methoden gelten nur für ein spezielles Objekt. Allerdings können andere Objekte ebenfalls darauf zugreifen.


var obj_1 =
{
  eigenschaft 'blubb',
  methode     : function()
  {  
    alert (this.eigenschaft);
  }
}
var obj_2 =
{
  methode     : function()
  {  
    obj_1.methode();
  }
}
obj_2.methode();

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