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' }