简单的JavaScript深度克隆
2020-05-27 本文已影响0人
ChooAcc
let obj = { one: 5, tow: "str", three: [4, 3, 2, 1], four: { a: "A", b: "B" }, five: null, six: undefined };
/**
* 简单深度克隆
* @param {被克隆对象} obj
*/
function deepClone(obj) {
if (!isObject(obj)) { return obj; }
let temp = Array.isArray(obj) ? [] : {};
for (let key in obj) {
if (isObject(obj[key])) {
temp[key] = deepClone(obj[key]);
} else {
temp[key] = obj[key];
}
}
return temp;
}
/**
* 检验是否为对象
* @param {被检查的元素} obj
*/
function isObject(obj) {
return obj && typeof obj === "object";
}
// 测试
let copy = deepClone(obj);
copy["three"][0] = 155;
// { one: 5, tow: "str", three: [155, 3, 2, 1], four: { a: "A", b: "B" }, five: null, six: undefined }
console.log(copy);
// 原对象数据不受影响
// { one: 5, tow: "str", three: [4, 3, 2, 1], four: { a: "A", b: "B" }, five: null, six: undefined }
console.log(obj);
相关内容:JavaScript浅克隆对象的方法