Hallo Martin.
Einige Fachleute vertreten die Ansicht, dass diese drei Beispiele letztendlich nur drei verschiedene Notationen sind, die intern zum gleichen Ergebnis führen, und dass die Unterscheidung von Array und Objekt in JS reiner Formalismus ist. Dieser Auffassung schließe ich mich an. Jedes JS-Array kann ich auch als Objekt auffassen und umgekehrt.
Ich als Nichtfachmann würde es so formulieren, dass ein Array ein Objekt ist, aber ein Objekt kein Array. Eine Begründung hat dir Struppi ja schon geliefert. Ein Array dient dazu, Daten zu speichern, auf die du bei Bedarf zugreifen kannst (also so eine Art Eigenschaften, nur banaler ;-) ). Ein Objekt hingegen als reinen manipulierbaren Datenspeicher zu sehen, ist nach meiner Meinung zu wenig, da es bei einem Objekt darum geht, etwas speichern zu können (Eigenschaften), aber auch, diese Eigenschaften oder auch die Eigenschaften anderer Objekte zu manipulieren (Methoden).
Nehmen wir mal das Beispiel Buch. Angenommen, Buch wäre ein Array. Dann könntest du über Buch[0..n] auf die Seiten des Buches zugreifen. Möchtest du das Buch an einer bestimmten Stelle aufschlagen, geht das nicht, ein Array kann sich nicht aufschlagen. Du musst also die Hände nehmen. Wäre Buch ein Objekt, könnte es die verschiedensten Eigenschaften haben, z.B. Seitenzahl, Anzahl der Kapitel und natürlich den Inhalt. Darüber hinaus hätte es Methoden, z.B. Aufschlagen oder vielleicht Blättern oder sowas, sodass du zum Aufschlagen oder Blättern deine Hände nicht bräuchtest ;-)
Ich habe das jetzt so hingeschrieben, wie ich mir OOP mal selber versucht habe zu erklären und hoffe, dass es so verständlich und einigermaßen richtig ist :-)
Freundschaft!
Siechfred