深拷貝的三種方式


  • 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