Christian Kruse: Feature Artikel: Objekt-Handling in JavaScript

Beitrag lesen

Hallo molily,

<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.

Uuups. Danke. Noch ein Ueberbleibsel von vor der
Umstrukturierung.

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.

Nicht nur globvar, sondern auch myclass und func.

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...

Sie sollen verdeutlichen, dass Variablen und Funktionen als
Attribute in self gespeichert werden :)

Generell hätte ich mir entweder etwas zu der intendierten
Ausgabe der Beispiele gewünscht (»Der erste
Funktionsaufruf gibt undefined aus, weil ...« etc.)

Hm, habe ich das so nicht gemacht?

oder zumindest einen Hinweis, auf welchem Browser die
Sachen lauffähig sind (Opera 6.05 kann einiges nicht).

Hm, das ist schwierig... ich habe keinen Zugang zu einem IE.
Getestet sind die Beispiele im Mozilla und NN4, der NN4 kann
nur das getElementById im einen Beispiel nicht.

Das zweite Beispiel unter »Implementation von Objekten« -
wieso gibt das eigentlich zweimal undefined aus,

Tut es das? Welcher Browser? Dann hat der einen Bug... der
ECMA-Standard schreibt das genau so vor.

ich hätte
getippt, dass x("calling x") »calling x« ausgibt,

Korrekt.

der
zweite alert... undefined, wie beobachtet, da das Attribut
nicht über die Laufzeit der Funktion hinweg zugänglich
ist, stimmt das?

Korrekt.

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?

Das bedeutet, dass in JS nicht alle Parameter bekannt gegeben
werden muessen :)

Kann eine Funktion mehrere Parameter entgegennehmen als
in der Parameterliste angegeben, werden diese Attribute
dann vielleicht mit numerischem Index vergeben....?

Korrekt.

function blahr() {
  alert(blahr.arguments.length);
}

blahr("a","b","c");

Gruesse,
 CK