JS中的深浅拷贝

浅拷贝:

深拷贝:

 

    var datas = [{
        id: 1,
        name: '家电',
        goods: [{
            id: 11,
            gname: '冰箱'
        }, {
            id: 12,
            gname: '空调'
        }]
    }, {
        id: 2,
        name: '数码'
    }]

    var o = {};

    function copy(newD, oldD) {
        for (var k in oldD) {
            //先获取属性
            var item = oldD[k];
            if (item instanceof Array) {    //先写数组再写对象,因为数组也属于一个对象,先写对象会跳过
                newD[k] = [];
                copy(newD[k], item);   //递归深拷贝
            } else if (item instanceof Object) {
                newD[k] = {};
                copy(newD[k], item);
            } else
                newD[k] = item;    //无更深,浅拷贝
        }
        // return newD;
    }
    copy(o, datas)
    console.log(o); 

 

posted @ 2021-09-09 21:36  Jacky02  阅读(30)  评论(0)    收藏  举报