js實現拷貝,使用普通賦值對象,在操做其中一個對象值的時候,另外一個也會更改,不符合需求數組
所以引入深度拷貝,如下爲實現深度拷貝的幾種法:spa
// 合併多個對象 var target = { a: 1, b: 1 }; var source1 = { b: 2, c: 2 }; var source2 = { c: 3 }; Object.assign(target, source1, source2);
注意: 這個是僞深度拷貝,只能拷貝第一層code
function deepClone(source){ const targetObj = source.constructor === Array ? [] : {}; // 判斷複製的目標是數組仍是對象 for(let keys in source){ // 遍歷目標 if(source.hasOwnProperty(keys)){ if(source[keys] && typeof source[keys] === 'object'){ // 若是值是對象,就遞歸一下 targetObj[keys] = source[keys].constructor === Array ? [] : {}; targetObj[keys] = deepClone(source[keys]); }else{ // 若是不是,就直接賦值 targetObj[keys] = source[keys]; } } } return targetObj; }
let obj = { name: 'admin' } let obj2 = { age: 14, ...obj } console.log(obj2) // { age: 14, name: 'admin' }