首先深复制和浅复制只针对像 Object, Array 这样的复杂对象的。简单来说,浅复制只复制一层对象的属性,而深复制则递归复制了所有层级。
var obj1 = {
a:1,
b:{
c:2
}
}
var obj2 = obj1
obj1.a = 3
//现在obj2.a也是3
//浅拷贝
var obj3={}
for(var attr in obj1){
obj3[attr] = obj1[attr]
}
//深拷贝1
递归
var obj1 = {
a:1,
b:{
c:2
}
}
function deepCopy(obj){
var result={}
for(var attr in obj){
if(typeof obj[attr] ==="object"){
console.log("hah ")
result[attr]=deepCopy(obj[attr])
}else{
result[attr] = obj[attr]
}
}
return result
}
var obj2 = deepCopy(obj1)
var obj3 = obj1
obj1.a=6
obj1.b.c=4
console.log(obj2)
// a:1
// b:{c: 2}
console.log(obj3)
// a:6
// b:{c: 4}
//深拷贝2
JSON.parse(JSON.stringify(obj))
递归方法性能更好些