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
Wie lösche ich Umgebungsvariablen unter Linux? Ve...
Vorwort: Die Docker-Portzuordnung erfolgt häufig,...
Problembeschreibung: Der Benutzer hat die Anforde...
Szenario So rendern Sie Listen mit bis zu 10.000 ...
Vorwort Der Grund für das Schreiben dieses Artikel...
Reine Front-End-Implementierung:切片上傳斷點續傳.斷點續傳muss...
In diesem Artikel werden die detaillierten Schrit...
Konfigurieren Sie die Webseitenkomprimierung, um ...
Als ich heute VMware verwendete, um eine neue vir...
Abschluss: Wenn in einer Multithread-Umgebung ein...
Die Kapselung und Verwendung der Vue-Komponente z...
Zusammenfassung: MySQL bietet eine Vielzahl von S...
Lassen Sie uns kurz die Konfiguration von Server ...
Dieser Artikel enthält das ausführliche Installat...
1. Hintergrund der parallelen Replikation Zunächs...