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