1、通过Object.assign({},obj)实现
缺点:只能实现第一层的深拷贝,并且只能拷贝对象
2、通过JSON.parse(JSON.stringify(obj))实现
缺点:不能拷贝函数、undefined、RegExp 等类型
2、通过递归调用实现
/* 递归实现深拷贝 */ function deepCopy(obj) { // 判断深拷贝对象是数组还是对象 let objClone = Array.isArray(obj) ? [] : {} // 判断拷贝内容不能为空,并且是对象或者数组 if (obj && typeof obj === 'object') { // 进行深拷贝 for (const key in obj) { // 判断是否是自身属性 if (obj.hasOwnProperty(key)) { // 判断是否进行递归拷贝(多维数组或对象) if (obj[key] && typeof obj[key] === 'object') { // 递归拷贝 console.log(key); objClone[key] = deepCopy(obj[key]) } else { // 不需要递归直接拷贝(一维数组或对象) objClone[key] = obj[key] } } } } return objClone }
01-12
1355

02-13