// 深拷貝函數封裝
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'}}