// 深拷贝函数封装
function deepCopy(obj) {
// 根据obj的类型判断是新建一个数组还是对象
let newObj = Array.isArray(obj)? [] : {};
// 判断传入的obj存在,且类型为对象
if (obj && typeof obj === ‘object‘) {
for(key in obj) {
// 如果obj的子元素是对象,则进行递归操作
if(obj[key] && typeof obj[key] ===‘object‘) {
newObj[key] = deepCopy(obj[key])
} else {
// // 如果obj的子元素不是对象,则直接赋值
newObj[key] = obj[key]
}
}
}
return newObj // 返回新对象
}
// 对象的深拷贝
let obj1 = {
a: ‘1‘,
b: ‘2‘,
c: {
name: ‘Demi‘
}
}
let obj2 = deepCopy(obj1) //将obj1的数据拷贝到obj2
obj2.c.name = ‘wilsunson‘
console.log(obj1) // {a: "1", b: "2", c: {name: ‘wss‘}}
console.log(obj2) // {a: "1", b: "2", c: {name: ‘wilsunson‘}}
原文:https://www.cnblogs.com/wilsunson/p/10775899.html