深拷贝和浅拷贝的区别和实现

首先深复制和浅复制只针对像 Object, Array 这样的复杂对象的。简单来说,浅复制只复制一层对象的属性,而深复制则递归复制了所有层级。

var obj1 = {
    a:1,
    b:{
        c:2
    }
}​
var obj2 = obj1
obj1.a = 3
//现在obj2.a也是3

//浅拷贝
var obj3={}
forvar 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))

递归方法性能更好些

阅读更多

没有更多推荐了,返回首页