Heim >Web-Frontend >js-Tutorial >Drei Implementierungsmethoden für JS Deep Copy
Die Betriebsumgebung dieses Tutorials: Windows 7-System, JavaScript-Version 1.8.5, Dell G3-Computer.
Drei Möglichkeiten, JS Deep Copy zu implementieren
1. Konvertieren Sie das Objekt in JSON-String-Form und konvertieren Sie es dann in ein natives JS-Objekt 🎜>2. Verwenden Sie die for-Schleife in JS, um das Durchlaufen und Kopieren zu implementieren.
//_tmp和result是相互独立的,没有任何联系,有各自的存储空间。 let deepClone = function (obj) { let _tmp = JSON.stringify(obj);//将对象转换为json字符串形式 let result = JSON.parse(_tmp);//将转换而来的字符串转换为原生js对象 return result; }; let obj1 = { weiqiujaun: { age: 20, class: 1502 }, liuxiaotian: { age: 21, class: 1501 } }; let test = deepClone(obj1); console.log(test);
3. Verwenden Sie die Methode „Array.prototype.forEach“, um eine tiefe Kopie zu erreichen.
function deepClone(obj) {
let result = typeof obj.splice === "function" ? [] : {};
if (obj && typeof obj === 'object') {
for (let key in obj) {
if (obj[key] && typeof obj[key] === 'object') {
result[key] = deepClone(obj[key]);//如果对象的属性值为object的时候,递归调用deepClone,即在吧某个值对象复制一份到新的对象的对应值中。
} else {
result[key] = obj[key];//如果对象的属性值不为object的时候,直接复制参数对象的每一个键值到新的对象对应的键值对中。
}
}
return result;
}
return obj;
}
let testArray = ["a", "b", "c", "d"];
let testRes = deepClone(testArray);
console.log(testRes);
console.log(typeof testRes[1]);
let testObj = {
name: "weiqiujuan",
sex: "girl",
age: 22,
favorite: "play",
family: {brother: "son", mother: "haha", father: "heihei"}
};
let testRes2 = deepClone(testObj);
testRes2.family.brother = "weibo";
console.log(testRes2);
Empfohlenes Tutorial: „
Das obige ist der detaillierte Inhalt vonDrei Implementierungsmethoden für JS Deep Copy. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!