Hallo, Christian,
»Faszinierend«... ;) Ist spannend zu lesen. Ich muss gestehen, dass ich generell nur die Grundlagen objektorientierter Programmierung kenne, weshalb ich vieles nicht auf Anhieb verstanden habe, es klingt aber alles sehr logisch und im Grunde genommen vergleichsweise einfach in der Umsetzung.
Einige Anmerkungen:
<h2 class="Sh2"><a class="an" name="aboutvars">Variablen</a></h2>
^^^^^^^^^
Ist aber bei zwei Links (Inhaltsverzeichnis und »Erstelle ein Attribut im <a>[DOWN] aktuellen Variablen-Objekt</a> mit ...«) mit dem Anker »varobj« verlinkt.
Das Beispiel des eben genannten Absatzes enthält den Code:
var globvar = "val";
function func() {
alert("func called!");
}
function myclass() {
this.func = func;
}
alert("Variable globvar: " + self["globvar"]);
for(entry in self) {
alert(entry);
}
Hier soll doch nur veranschaulicht werden, dass globvar auch als Arrayeintrag erreichbar ist. Folglich ist in diesem Beispiel die Deklaration von »func« und »myclass« nicht entscheidend für das Beispiel, bzw. es ist nicht davon betroffen und macht nicht davon Gebrauch... man könnte die beiden Funktionen (Objekte ;)) deshalb herausnehmen, ich zumindest habe lange gerätselt, um deren Aufgabe in diesem speziellen Beispiel herauszufinden (mit dem Fazit, dass es nur von anderen Beispielen übernommen wurde, aber in diesem Beispiel nicht gebraucht wird).
Generell hätte ich mir entweder etwas zu der intendierten Ausgabe der Beispiele gewünscht (»Der erste Funktionsaufruf gibt undefined aus, weil ...« etc.) oder zumindest einen Hinweis, auf welchem Browser die Sachen lauffähig sind (Opera 6.05 kann einiges nicht).
Das zweite Beispiel unter »Implementation von Objekten« - wieso gibt das eigentlich zweimal undefined aus, ich hätte getippt, dass x("calling x") »calling x« ausgibt, der zweite alert... undefined, wie beobachtet, da das Attribut nicht über die Laufzeit der Funktion hinweg zugänglich ist, stimmt das?
Noch etwas:
| Wird eine Funktion ausgeführt, so wird für jeden formalen Parameter
| das Attribut im Funktions-Objekt auf den Wert des entsprechenden
| Parameters gesetzt.
Soweit klar - aber was bedeutet »formaler« Parameter, ich verstehe den Zusatz nicht: »in JavaScript müssen Parameter nicht zwingend formal deklariert werden«. Was bedeutet das? Kann eine Funktion mehrere Parameter entgegennehmen als in der Parameterliste angegeben, werden diese Attribute dann vielleicht mit numerischem Index vergeben....?
Wenn ich endlich meinen Popup-Artikel fertig habe, könnte ich mich einmal an ein rekursive Ausgabe aller Objekte im Hinblick auf die von dir diskutieren Besonderheiten machen, damit man die Objekthierarchie und Änderungen daran noch anschaulicher verdeutlichen kann, dazu muss ich mir den Artikel aber noch mehrmals durchlesen...
Grüße,
Mathias
Mein Leben, ein Leben ist es kaum, / Ich gehe dahin als wie im Traum.
Wie Schatten huschen die Mensch hin, / Ein Schatten dazwischen ich selber bin.
Und im Herzen tiefe Müdigkeit - / Alles sagt mir: Es ist Zeit ...
(Theodor Fontane, Mein Leben)