es gibt programmiersprachen die objectorientiert sind und keine banale funktion zum kopieren der objecte anbieten? und JS gehört dazu? ehrlich?
anscheinend ja
Vergiss am besten alles, was dort steht. Man sollte keine LÖSUNGEN diskutieren, ohne eine konkrete AUFGABE formuliert zu haben.
aber meine güte - die haben schon version 1.8 und diese scheiße wurde nicht hinzugefügt? mamma mia....
»Diese Scheiße« wurde absichtlich nicht hinzugefügt, weil sie im Kontext von JavaScript »scheiße« wäre, um es mit deinen Worten zu sagen. Im Übrigen haben »die« schon ECMAScript Edition 5 und dort gibt es - absichtlich - immer noch keine Klon- bzw. Kopierfunktion. So etwas ist auch nicht geplant. Es passt nicht ins Sprachkonzept einer solchen funktionalen und prototypischen Sprache.
Wie gesagt, es gibt sehr viele Fälle von »Kopiere mir ein Object«. Die kann man aber fast immer SPEZIFISCH besser lösen, anstatt in jedem Fall ein Deep Copy draufzuwerfen. Clientseitiges JavaScript operiert ja hauptsächlich auf dem DOM. Das heißt, es gibt einen riesigen Haufen von sogenannten Hosts Objects. Die kann man ohnehin nicht über eine generische Kopiermethode klonen, sondern z.B. über spezifische eingebaute wie etwa bei DOM-Knoten. In den meisten Fällen reicht es, mit Referenzen auf sie zu arbeiten.
Es ist durchaus sinnvoll, die Native und Hosts Objects zu erweitern und an sie zu delegieren. Dazu bietet einem ECMAScript 5 wie gesagt schon viel. In ECMAScript Harmony, dem Nachfolger, sind zudem native Proxies möglich. Damit kann man sich die Arbeit mit Hosts Objects vereinfachen. Genau das machen Bibliotheken wie jQuery oder Prototype bereits, wenn auch auf verschiedene Weisen und noch ohne die Helfer, die die JavaScript-Engines bald bieten werden.
Mathias