利用函数递归来实现深拷贝
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
let obj = {
name: "zhangbing",
user: {
name: "zb"
},
data: []
};
function copy(object) {
let obj = object instanceof Array ? [] : {};
for (const [k, v] of Object.entries(object)) {
obj[k] = typeof v == "object" ? copy(v) : v;
}
return obj;
}
let hd = copy(obj);
hd.data.push("cuc");
console.log(JSON.stringify(hd, null, 2));
console.log(JSON.stringify(obj, null, 2));
</script>
</body>
</html>
控制台输出结果
{
"name": "zhangbing",
"user": {
"name": "zb"
},
"data": [
"cuc"
]
}
{
"name": "zhangbing",
"user": {
"name": "zb"
},
"data": []
}