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