实现对象深拷贝的四种方式
// 1、使用json转换 // 通过JSON.stringify()转化为字符串,再使用JSON.parse()转换为对象 var obj = {name:'123'}; var obj2 = JSON.parse(JSON.stringify(obj)); // 2、解构赋值 var obj3 = {name:'123',age:'14'}; var obj4 = {...obj}; // 3、使用对象合并 // 利用Object.assign(),第一个参数必须为空对象 var obj5 = {name:'123',age:18}; var obj6 = Object.assign({},obj5);
// 利用循环和递归的方式
function deepClone(obj, newObj) { var newObj = newObj || {}; for (let key in obj) { if (typeof obj[key] == 'object') { newObj[key] = (obj[key].constructor === Array) ? [] : {} deepClone(obj[key], newObj[key]); } else { newObj[key] = obj[key] } } return newObj; }