1. Oberflächliche Kopie1. Objekt.zuweisen(Ziel, Quelle, Quelle…)a. Unterstützt die Replikation mehrerer Objekte b. Wenn die Quell- und Zielattribute identisch sind, kopiert die Quelle die Zielattribute c. Ziel kann nur ein Objektobjekt sein var obj = {a:1,b:2} undefiniert Objekt.zuweisen({c:3},obj) {c: 3, a: 1, b: 2} obj {a: 1, b: 2} Kompatibilität schreiben if (Object.assign) {//kompatibel} else {//inkompatibel} 2. Spread-OperatorUnterstützt das Kopieren mehrerer Objekte in ein Objekt" var obj1 = { foo: "foo" }; var obj2 = { bar: "bar" }; var copySpread = { ...obj1, ...obj2 }; // Objekt {foo: "foo", bar: "bar"} KopierenVerbreiten {foo: "foo", bar: "bar"} var obj = {a:1,b:2,c:3} var objs = {...obj} Objekte {a: 1, b: 2, c: 3} objs.a=10 10 Objekte {a: 10, b: 2, c: 3} obj {a: 1, b: 2, c: 3} 2. Tiefe Kopie1. Verwenden Sie die Objektserialisierung JSON.stringify() und JSON.parse()Hinweis: Diese Methode funktioniert nur, wenn das Originalobjekt serialisierbare Werttypen enthält und keine zirkuläre Referenzen aufweist. Ein Beispiel für einen nicht serialisierbaren Wertetyp ist ein Date-Objekt. JSON.parse kann es nur in einen String analysieren und nicht zurück in sein ursprüngliches Date-Objekt oder ein Objekt analysieren, dessen Eigenschaftswert eine Funktion ist. var obj = {a:1,b:[1,2,3],c:{e:3},bool:false} undefiniert var objs = JSON.parse(JSON.stringify(obj)) undefiniert Objekte {a: 1, b: Array(3), c: {…}, bool: false} objs.bool = true WAHR Objekte {a: 1, b: Array(3), c: {…}, bool: true} obj {a: 1, b: Array(3), c: {…}, bool: false} 2. Verwenden Sie Rekursion, um Objekteigenschaften zu beurteilenFunktion deepClone(Objekt) { var kopieren; // Wenn obj null, undefiniert oder kein Objekt ist, gib obj direkt zurück // Behandeln Sie die 3 einfachen Typen und null oder undefiniert wenn (null == Objekt || "Objekt" != Typ von Objekt) returniere Objekt; // Datum verarbeiten wenn (Objektinstanz von Datum) { kopieren = neues Datum(); Kopieren.Zeit festlegen(Objekt.Zeit abrufen()); Rückexemplar; } // Array verarbeiten wenn (Objektinstanz von Array) { kopieren = []; für (var i = 0, len = obj.length; i < len; i++) { Kopie[i] = Klon(Objekt[i]); } Rückexemplar; } //Handle-Funktion if (obj Instanz der Funktion) { kopieren = Funktion() { returniere obj.apply(diese, Argumente); } Rückexemplar; } //Objekt handhaben if (obj Instanz von Objekt) { kopieren = {}; für (var attr in obj) { wenn (obj.hasOwnProperty(attr)) Kopie[attr] = Klon(obj[attr]); } Rückexemplar; } throw new Error("Objekt kann nicht kopiert werden, da Typ nicht unterstützt wird" + obj.constructor.name); } Oben sind die Details zum Kopieren von JS-Objekten (Deep Copy und Shallow Copy) aufgeführt. Weitere Informationen zu JS finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Befehl zum Anzeigen der Erstellungszeit der Binlog-Datei unter Linux
>>: Zusammenfassung der Linux-Benutzergruppen und -Berechtigungen
1. Einführung in Docker 1.1 Virtualisierung 1.1.1...
Was ist Volumen? „Volume“ bedeutet auf Englisch K...
Die automatische Inkrementierung der Primärschlüs...
Heute habe ich einem Klassenkameraden geholfen, e...
Dieser Artikel stellt hauptsächlich die Analyse d...
Docker-Fehler 1. Überprüfen Sie die Ursache Docke...
ZeicheneffekteImplementierungscode JavaScript var...
Dieser Artikel beschreibt anhand eines Beispiels ...
1. parseFloat()-Funktion Erstellen Sie auf einer ...
Inhaltsverzeichnis Indexmodell B+Baum Indexauswah...
1. Installieren Sie openssh-server yum install -y...
Zunächst einmal hängt die Gestaltung des Webseiten...
Installationsumgebung Windows 10 VMware Workstati...
Jeden Tag ein jQuery-Plugin – um einen Suchverlau...
Verwenden Sie „blockquote“ für lange Zitate, „q“ ...