JavaScript - Objekte - Besonderheiten
1. new
Mit diesem Schlüsselwort erstellt man eine neue Instanz eines Objektes. Bei dieser Erläuterung handelt es sich dabei erst mal nur um
schon in JavaScript vorgegebene. Das funktioniert zwar auch mit selbst definierten, das Thema ist aber im Moment ein wenig zu
komplex für den Anfang. Besonders wichtig ist new
, wenn man mehrere "Versionen" aus einem bereits vorgegebenen
Objekt anlegen will. Möchte man zum Beispiel eine dynamische Bildergalerie per JavaScript aufbauen, so muss man je nach
Programmierung für jedes Bild eine eigene Instanz anlegen.
blubb = new Image();
blubb.src = 'blubb.gif';
blubber = new Image();
blubber.src = 'blubber.gif';
Das Problem
... ist einer der Sachen, die ich an dieser Sprache so hasse. Manchmal muss man mit new
arbeiten, manchmal nicht
und keine Sau weiß warum. Bei den Objekten Array
(dazu gleich mehr) oder Math
beziehungsweise
String
kann man eine Instanz auch ohne new
erzeugen. Bei Date
dagegen nicht. Da ist es
zwingend vorgeschrieben. So funktioniert ein alert (String.fromCharCode(65, 66, 67));
ohne Probleme, während
man bei alert (Date.getDate());
eine Fehlermeldung um die Ohren gehauen bekommt, weil new
fehlt.
Wenn ich ganz ehrlich bin, die Feinheiten hatte ich auch noch nicht wirklich begriffen (da ich sie bisher kaum nötig hatte), aber
stellt euch schon mal darauf ein. Manchmal muss man einfach zuerst eine Instanz des gewünschten Objektes
mit new
erstellen.
2. with
Diese Schreibweise empfiehlt sich, wenn man mehrere Aktionen auf einem Objekt ausführen möchte. Dabei kann man sich damit ein wenig Tipparbeit sparen. So besteht die Möglichkeit, ein
document.getElementById('bla').style.border = '1px solid #f00';
document.getElementById('bla').firstChild.data = 'bla';
document.getElementById('bla').setAttribute('align', 'center');
auch anders zu schreiben. Dabei benötigt man innerhalb der Anweisung keine direkte Referenz mehr auf das Objekt, sondern kann die Methoden und Eigenschaften direkt ansteuern.
with (document.getElementById('bla'))
{
style.border = '1px solid #f00';
firstChild.data = 'bla';
setAttribute('align', 'center');
}
3. Geklammerte Eigenschaften
Als ich das zum ersten Mal gesehen habe, ist mir fast übel geworden. Keine Ahnung, welche gequälte Seele sich das ausgedacht hat, aber das sah mir aus, als ob es direkt aus der Programmiererhölle käme. Es ist doch tatsächlich möglich, diesen Code
var bla = document.getElementById('bla');
bla.style.border = '1px solid #f00';
bla.firstChild.data = 'bla';
auch so zu schreiben
var bla = document.getElementById('bla');
bla['style']['border'] = '1px solid #f00';
bla['firstChild']['data'] = 'bla';
Nach ersten Recherchen (zu mehr habe ich mich nicht getraut ob dieser Grausamkeit) gilt dies wohl nur für Eigenschaften eines Objektes, nicht für seine Methoden. Trotzdem mein Tipp. Das ist echt krank. Ich würde niemals damit arbeiten. Aber vielleicht bin ich ja auch zu alt und konservativ dafür.
4. style
Die style
-Eigenschaft benötigt man für die JavaScript-seitige Manipulation für CSS-Anweisungen. Es gibt aber einen kleinen
Unterschied, denn der normale Strich (-
), den man von CSS her kennt, ist in diesem Fall verboten. Stattdessen lässt man
ihn weg und beginnt den zweiten Teil der Anweisung mit einem Großbuchstaben. So wird zum Beispiel aus einem background-color
im JavaScript ein backgroundColor
.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt