Hauptmenü

Untermenü

OOP mit JavaScript - Objektliterale - Besonderheiten

1. Ei verbibbsch

Bekanntlicherweise dürfen in fast allen Programmiersprachen Variablen (Eigenschaften) und Funktionen (Methoden) nicht mit einer Zahl beginnen. Und da macht selbst JavaScript keine Ausnahme.

Denkste!

Eine Ausnahme gibt es doch. Wie könnte es bei dieser Sprache auch anders sein. Nämlich bei den Eigenschaften und Methoden eines Objektliterals. Das sieht zwar ziemlich seltsam aus, funktioniert jedoch einwandfrei.

2. Nummerierung

Analog zu numerischen Indizes bei Arrays kann man das auch auf Literale übertragen. Dabei setzt man als "Bezeichner/Index" einfach eine Zahl, also zum Beispiel das.


var obj =
{
  'blubb',
  'blubber'
}

Nur unterscheidet sich der Zugriff von dem sonst üblichen. Folgender Code wirft natürlich einen Fehler aus,


alert (obj.0);

während der hier reibungslos funktioniert.


alert (obj[0]);

Also!

Immer daran denken, bei numerischen Bezeichnungen immer die eckigen Klammern verwenden, sonst knallt es!

3. Anzahl der Einträge

Bei Arrays mit numerischen Indizes kann man in JavaScript jederzeit die Menge ermitteln. Das geschieht über ein einfaches


var level = new Array('a','b','c');
alert (level.length);

Bei Literalen nicht!

Denn in dem folgenden Fall haben wir eine Eigenschaft, die wiederum zwei weitere beinhaltet. Es handelt sich hier also nicht um eine abnorme Art von Array.


var bla =
{
  laber :
  {
    0'blubb', 
    1'blubber'
  }
}
// Ergibt undefined
alert (bla.laber.length);

Etwas Grundsätzliches

Mal abgesehen von diesen Seltsamkeiten kann man sich Literale doch als eine Art von Array vorstellen. Und zwar ein assoziatives. Und genau wie bei richtigen Arrays dieser Art durchläuft man ein Literal mit einer for ... in -Schleife. Allerdings muss man dann unterscheiden zwischen Eigenschaften und Methoden. Auf die Feinheiten werde ich in einem kommenden Tutorial eingehen.

4. Methoden

Was bei den Eigenschaften schon komisch aussieht, wirkt bei den Methoden völlig absurd. Aber auch hier kann man einfach eine Zahl als Namen angeben. Man muss nur beim Aufruf darauf achten, dass man die eckigen Klammern nicht vergisst.


var obj =
{
  : function()
  {
    alert ('hallo')
  }
}
obj[0]();

5. Und wozu sollte man damit arbeiten?

Gute Frage. Normalerweise überhaupt nicht. Ich habe aber an einer echt kranken Konzeptprogrammierung gesessen, wo ich fast nur damit gearbeitet habe. War sehr elegant aufgebaut, hochgradig flexibel, ließ sich wunderbar steuern und war nach spätestens zwei Wochen nicht mehr lesbar. Vielleicht stelle ich euch das irgendwann mal vor. Aber nur wenn ihr versprecht, nicht die Leute mit den Jacken zu holen, die man hinten zumacht. Die Jacken, nicht die Leute.

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