Was ist der Unterschied zwischen Deep Copy und Shallow Copy in JS?
Der Unterschied zwischen den beiden besteht darin, ob die kopierte Entität eines Objekts tatsächlich erhalten wird und nicht eine Referenz. Tiefe Kopie öffnet eine Speicheradresse im Computer, um das kopierte Objekt zu speichern, während flache Kopie nur Es zeigt auf die kopierte Speicheradresse. Wenn das Objekt an der ursprünglichen Adresse geändert wird, ändert sich auch das flach kopierte Objekt entsprechend.
Deep Copy
Die einfachste Methode ist
JSON.parse(JSON.stringify()) function deepCopy(o) { return JSON.parse(JSON.stringify(o)) } var c = { age: 1, name: undefined, sex: null, tel: /^1[34578]\d{9}$/, say: () => { console.log('hahha') } } // { age: 1, sex: null, tel: {} }
Es ist zu beachten, dass diese Kopiermethode einige spezielle Dateiattribute (z als reguläre Ausdrücke, undefiniert, Funktion)
Rekursion verwenden, um alle hierarchischen Attribute zu kopieren
function deepCopyTwo(obj) { let objClone = Array.isArray(obj) ? [] : {}; if (obj && typeof obj == 'object') { for (const key in obj) { //判断obj子元素是否为对象,如果是,递归复制 if (obj[key] && typeof obj[key] === "object") { objClone[key] = deepCopyTwo(obj[key]); } else { //如果不是,简单复制 objClone[key] = obj[key]; } } } return objClone; }
Flache Kopie
object.assign(target,source)
Objekt Das .assign Die Methode kopiert nur aufzählbare Eigenschaften im Quellobjekt und die Eigenschaften des Objekts selbst.
Wenn eine Eigenschaft im Zielobjekt denselben Schlüssel hat, wird die Eigenschaft durch die Eigenschaft in der Quelle überschrieben. Eigenschaften späterer Quellen überschreiben in ähnlicher Weise frühere Eigenschaften. Object.assign überspringt diejenigen, deren Wert [null] ist. Null ist ein JavaScript-Literal, das Null oder einen „leeren“ Wert darstellt gegenwärtig. Es handelt sich um einen der Grundwerte von JavaScript. ") oder undefiniertes Quellobjekt.
Empfohlenes Tutorial: "
JS TutorialDas obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Deep Copy und Shallow Copy in JS?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!