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
Ursache Ich habe WordPress einst auf Vultr einger...
Inhaltsverzeichnis Was ist eine relationale Daten...
1. Installieren Sie die vsftpd-Komponente Install...
In diesem Artikelbeispiel wird der spezifische Co...
1. Position : fest Gesperrte Position (relativ zu...
Für Linux-Systemadministratoren ist es von entsch...
Einführung Ich habe eine Zeit lang die PostgreSQL...
Jeder weiß, dass Daten in MySQL auf die Festplatt...
In Bezug auf die Anzeige: flexibles Layout: Manch...
Das Erscheinungsbild einer Webseite hängt maßgebl...
In diesem Artikel wird beschrieben, wie Sie mit D...
1. löschen delete ist die einzige wirkliche Mögli...
Inhaltsverzeichnis Vorwort 1.v-show 2.v-wenn 3. D...
1. Befehlseinführung Mit dem Befehl passwd werden...
Wirkung der Operation html <Kopf> <meta ...