深拷贝的三种方式


  • JSON方法
    var obj2 =JSON.parse(JSON.stringify(obj1))//深拷贝

  • 递归(自己调用自己)方法 判断第一层属性的类型,多层拷贝对象的属性
    var obj1 = {
    name: 'zs',
    age: 18,
    dog: {
    name: '金毛',
    age: 2
    },
    friends: ['ww', 'lil']
    }
    var obj2 = {};
    function deepCopy(o1, o2) {
    for (var k in o1) {
    //如果第一层中的属性是数组复杂类型
    if (o1[k] instanceof Array) {
    o2[k] =[];//如果o1[k]是数组,那就给o2[k]也准备一个数组存放拷贝过来的内容
    deepCopy(o1[k], o2[k]);
    }
    //如果第一层中的属性是object复杂类型
    else if (o1[k] instanceof Object) {
    o2[k]={};
    deepCopy(o1[k], o2[k]);
    } else {
    o2[k] = o1[k];
    }
    }
    }
    deepCopy(obj1, obj2);
    obj1.name = 'lisi';
    obj1.dog.name = '大黄';
    console.log(obj1);
    console.log(obj2);

  • Object.created();
    // Object.create()具体使用方法
    var obj = {name:'lisi'};
    var newObj = Object.create(obj);
    //newObj的原型(proto)指向obj,具备了obj的属性和方法


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM