深度拷贝

1.对象只有一层是,可以使用es6的对象扩展
var obj = {a: 123}
var obj1 = {...obj}

2.对象是多层嵌套时
方法一:先将对象转为字符串再解析
var obj2 = {
a: 123,
b: {
c: 4,
}
}
var obj3 = JSON.parse(JSON.stringify(obj2))

方法二:使用循环将对象中的值一个个取出赋值给新的对象
function deepCopy(obj) {
if(obj && typeof obj === 'object' ) {
var newobj = obj instanceof Array ? [] : {}
for(var item in obj) {
newobj[item] = typeof obj[item] ==='object' ? deepCopy(obj[item]) : obj[item]
}
return newobj
}
}
var arr3 = [1,2,[4,5]]
var arr4 = deepCopy(arr3)

你可能感兴趣的:(深度拷贝)