美文网首页
JS深浅拷贝

JS深浅拷贝

作者: 被遗忘的传说 | 来源:发表于2017-05-04 10:22 被阅读0次
// 浅拷贝
var json1 = {
    name: 'aaa',
    age: 25,
    data: {
        a: 1,
        b: 2
    }
};

function copy(parent, child) {
    var child = child || {};
    for(var i in parent) {
        child[i] = parent[i];
    }
    return child;
}

var json2 = copy(json1);
json2.data.a = 3;
console.log(json1.data.a);// json1.data.a受影响也变成3了
console.log(json2.data.a);
// 深拷贝:利用递归
var json1 = {
    name: 'aaa',
    age: 25,
    data: {
        a: 1,
        b: 2
    }
};

function deepCopy(parent, child) {
    var child = child || {};// 并不是直接声明一个新child为空{},传过来的就用传过来的
    for(var i in parent) {
        if(typeof parent[i] === 'object') {
            child[i] = (parent[i].constructor === Array) ? [] : {};// child.data = {};
            deepCopy(parent[i], child[i]);// {a: 1,b: 2},传过去的是child.data的空json
        }
        else {
            child[i] = parent[i];// child.data.a ...
        }
    }
    return child;
}

var json2 = deepCopy(json1);
json2.data.a = 3;
console.log(json1.data.a);// json1.data.a不受影响,仍旧是1
console.log(json2.data.a);

相关文章

  • JS文集的目录

    js基础心法 深浅拷贝(递归)深浅拷贝(首层浅拷贝) js 数据处理 数组对象查找的常见操作数组对象去重的常见操作...

  • js的深浅拷贝

    js的深浅拷贝可以分为数组的深浅拷贝和对象的深浅拷贝 一、数组的深浅拷贝如果只是简单的将数组中的元素付给另外一个数...

  • js深浅拷贝

    项目中,一般会用loadsh库,地址:https://github.com/lodash/lodash 浅拷贝方法...

  • js 深浅拷贝

    浅拷贝 是 把对象或者数组的第一层 key 或者 索引 赋到 新的 对象或者对象上 深拷贝是迭代浅拷贝的操作,也就...

  • js 深浅拷贝

    深拷贝 更好的写法: 浅拷贝 浅拷贝,还可以用 Object.assign 、展开运算符 ...

  • JS深浅拷贝

  • JS深浅拷贝

    JS存储方式 JS中存在基本数据类型和引用数据类型1.基本数据类型:number,string,boolean,n...

  • JS深浅拷贝

    浅拷贝 浅拷贝的意思就是只复制引用,而未复制真正的值。 深拷贝 深拷贝就是对目标的完全拷贝,不像浅拷贝那样只是复制...

  • JS 深浅拷贝

    START 番茄我又又又来写点啥啦。 最近敲代码,总是遇到需要修改数据,在前端展示。但是最后并不想修改原数据的情况...

  • JS 深浅拷贝

    https://blog.csdn.net/flyingpig2016/article/details/52895620

网友评论

      本文标题:JS深浅拷贝

      本文链接:https://www.haomeiwen.com/subject/eoertxtx.html