Einführung
In diesem Lab werden wir lernen, wie man in JavaScript eine tiefe Kopie eines Objekts erstellt. Wir werden Rekursion verwenden, um primitve Werte, Arrays und Objekte zu klonen, während Klasseninstanzen ausgeschlossen werden. Am Ende dieses Labs werden Sie in der Lage sein, eine vollständige Kopie eines Objekts zu erstellen, ohne das ursprüngliche Objekt zu verändern.
Anweisungen zur tiefen Klonierung eines Objekts
Um ein Objekt tief zu klonen, folgen Sie diesen Schritten:
- Öffnen Sie eine neue Terminal-/SSH-Instanz und geben Sie
nodeein, um mit der Codeausführung zu beginnen. - Verwenden Sie Rekursion, um primitve Werte, Arrays und Objekte zu klonen, wobei Klasseninstanzen ausgeschlossen werden.
- Überprüfen Sie, ob das übergebene Objekt
nullist, und geben Sie im positiven Fallnullzurück. - Verwenden Sie
Object.assign()und ein leeres Objekt ({}), um eine flache Kopie des Ursprungs zu erstellen. - Verwenden Sie
Object.keys()undArray.prototype.forEach(), um zu bestimmen, welche Schlüssel-Wert-Paare tief geklont werden müssen. - Wenn das Objekt ein
Arrayist, legen Sie dielengthdescloneauf die Länge des Ursprungs fest und verwenden SieArray.from(), um eine Kopie zu erstellen. - Verwenden Sie den folgenden Code, um die tiefe Klonierung zu implementieren:
const deepClone = (obj) => {
if (obj === null) return null;
let clone = Object.assign({}, obj);
Object.keys(clone).forEach(
(key) =>
(clone[key] =
typeof obj[key] === "object" ? deepClone(obj[key]) : obj[key])
);
if (Array.isArray(obj)) {
clone.length = obj.length;
return Array.from(clone);
}
return clone;
};
Verwenden Sie den folgenden Code, um Ihre Funktion zur tiefen Klonierung zu testen:
const a = { foo: "bar", obj: { a: 1, b: 2 } };
const b = deepClone(a); // a!== b, a.obj!== b.obj
Zusammenfassung
Herzlichen Glückwunsch! Sie haben das Lab "Tiefe Klonierung von Objekten" abgeschlossen. Sie können in LabEx weitere Labs absolvieren, um Ihre Fähigkeiten zu verbessern.