Hallo,
ich wundere mich nur warum man sich dafür entschieden hat das so zu spezifizieren
Weil es eine ganz allgemeine Regel ist, die alle Objects betrifft.
Es besteht kein Problem, wenn ein Arrays nur Primitives enthält. Das heißt, [1, 2, 3] == [1, 2, 3] ist natürlich trivial zu vergleichen.
Wenn das nicht der Fall ist, läuft der Wunsch, zwei Arrays zu vergleichen, auf einen allgemeinen Algorithmus hinaus, der die Gleichheit von Objekten prüft. Zum Beispiel beim Vergleich [window] == [window], der auf window == window hinausläuft, wäre ein definiertes Konzept von Gleichheit nötig, wenn == nicht bloß die Identität der Objekte prüfen soll.
Sinnvollerweise und unsinnigerweise sähe dieses Konzept so aus, dass der Interpreter alle Member durchgeht und vergleicht. Wenn es sich um Objekte handelt, müsste er wieder dessen Member vergleichen, rekursiv halt. Das wäre bei window == window reiner Overkill.
Will man das vermeiden, müsste man jedem Objekttyp seine eigene equals-Methode geben, die den Operator == überlädt. Die könnte dann einfacher und spezifischer sein. Dann hat man aber keine allgemeine Operanden-unabhängige Bedeutung von ==, man könnte die Resultate nicht mit ein paar Regeln abschätzen.
Mathias