/**
* 深拷贝
* @param {Object} obj要拷贝的对象
*/
function deepClone(obj = {}){
// obj 是null,或者不是对象和数组,直接返回
if(typeof obj !== 'object' || obj === null){
return obj
}
// 初始化返回结果
let result
if(obj instanceof Array){
result = []
}else{
result = {}
}
for(let key in obj){
// 保证key不是原型上的属性
if(obj.hasOwnProperty(key)){
// 保证key不是原型上的属性
result[key] = deepClone(obj[key])
}
}
// 返回结果
return result
}
// 例如定义一个对象
const obj1 = {
age:3,
name:'小书波',
address:{
city:'北京'
},
friends:['wendy','糖糖','桐桐','铭铭','晨曦']
}
const obj2 = deepClone(obj1)
obj2.address.city = 'hebei'
obj2.friends[0] = '王涤文'
// 这就是所谓得深拷贝,改变obj2里面的内容不影响obj1原有的值
console.log(obj1.address.city)//打印结果是'北京'
console.log(obj1.friends[0])//打印结果是'wendy'