Hallo,
Ich muss nochmal Erbsen zählen. ;)
Anscheinend ist ein Array in JS ein Object, dessen Feldnamen "zufällig" rein numerisch und fortlaufend numeriert sind.
Ein Object ist eine Art ungeordneter Hash mit Name-Werte-Paaren, soweit klar.
Ein Array ist ein solches Object und stellt *zudem* eine nummerierte, geordnete Liste mit Elementen dar. Da scheint mir dein Satz missverständlich.
Ein Array hat also beide Fähigkeiten voneinander *unabhängig*. Und die eine Fähigkeit ist auch nicht über die andere umgesetzt.
Ein Array ist in zweifacher Hinsicht eine Listenstruktur, er besitzt als Object eine ungeordnete Liste mit Membern identifiziert durch Strings und als Array eine geordnete Liste mit Elementen identifiziert durch Numbers.
Array-Elemente sind keine Member (Unterobjekte) des Array-Objekts. Ändert man die Member, bleiben die Elemente unangetastet; ändert man die Elemente, bleiben die Member unangetastet.
Das heißt konkret, arr[1] = "wert" bewirkt etwas völlig anderes als arr["1"] = "wert".
Das erste erzeugt ein Array-Element mit dem Index 1, welches kein Member (Unterobjekt) von arr ist.
Das zweite erzeugt einen Member namens »1«, kein Array-Element.
Ein Array ist nicht einfach ein Object, dessen Member numerisch identifiziert werden und fortlaufend nummeriert sind. Sonst wäre das hier schon ein halber Array:
var obj = {
1 : "a",
2 : "b",
3 : "c"
};
Hier könnte ich auch auch obj[1] schreiben. »1« wäre hier aber kein numerischer Index, sondern würde in einen String umgewandelt und würde als Membername behandelt. Außerdem kann man diese Object-Struktur nicht geordnet nach Membernamen durchlaufen. Mit einer for-in-Schleife bekommt man die Member in willkürlicher Reihenfolge.
Das nur als allgemeine Ergänzung, wahrscheinlich sage ich dir nichts neues. ;)
Mathias