JS对象的浅拷贝处理成深拷贝

对象的栈堆

对象的深拷贝:复制值

 var a = 10;
    var b = a;
    b = 20;
    console.log(a);      // 10
    console.log(b);      // 20

对象的浅拷贝:只复制地址,没有复制值;两个栈对应一个堆

 var obj = {
        name:"admin"
    }
    var obj2 = obj;  
    obj2.name = "root";
    console.log(obj);   //root
    console.log(obj2);  //root

以上可看出改变obj2的值,obj1的值也随着改变了,如何做到只复制值,不复制地址

利用重新创建对象的方式,遍历老对象的所有属性,逐个拷贝属性到新对象中:

var obj = {
        name:"admin",
        age:18,
        sex:"女",
    }
    var obj2 = {};
    for(var i in obj){
        obj2[i] = obj[i];
    }
    obj2.name = "root";
    console.log(obj.name);  //admin
    console.log(obj2.name);  //root

猜你喜欢

转载自www.cnblogs.com/cupid10/p/13183881.html