Ich habe überall gesucht und ähnliche Fragen mit Antworten gefunden, die mein Problem nicht wirklich ansprechen, also entschuldige ich mich, wenn dies wie eine Wiederholung erscheint, aber es scheint, dass die Deep-Copy-Funktion von jQuery nicht so funktioniert wie sie ist beschrieben (oder vielleicht irre ich seine Beschreibung).
Hier ist ein Beispiel für das Problem, das ich habe: Ссылка
Oder das zum Download: Ссылка
Warum werden die Daten in der vorherigen Kopie geändert, wenn die Tiefenkopie manipuliert wird?
Zum einen erstellen Sie keine normalen Objekte.
Ich schaue den Quellcode für jQuery 1.7.2 für erweitern.
Und ich bemerke die Linie:
%Vor% muss zu true
ausgewertet werden, um tief zu kopieren. Kopieren ist nur ein Teil des aktuellen Objekts, das kopiert wird.
Aber Sie erstellen keine "einfachen" Objekte. Sie erstellen Objekte, die durch Aufrufen eines Konstruktors mit dem neuen Operator generiert wurden.
Nun, in isPlainObject scheinen diese Zeilen ausgewertet zu werden. (wo hasOwn ist hasOwn = Object.prototype.hasOwnProperty
Und da kommt heraus, dass es kein "plainObject" ist.
Das macht Sinn, wenn Sie überlegen, ob Objekte mit einem Konstruktor wahrscheinlich über diesen Konstruktor erstellt werden oder zumindest eine Art "Klon" -Methode verwenden sollten, wie Sie es in anderen Sprachen / Frameworks sehen.
Tags und Links javascript jquery extend javascript-objects deep-copy