zoukankan      html  css  js  c++  java
  • 深拷贝和浅拷贝

    深拷贝和浅拷贝
    假设B复制了A,修改A的时候,看B是否发生变化:
    如果B跟着也变了,说明是浅拷贝,拿人手短!(修改堆内存中的同一个值)
    如果B没有改变,说明是深拷贝,自食其力!(修改堆内存中的不同的值)

    浅拷贝(shallowCopy)只是增加了一个指针指向已存在的内存地址,
    深拷贝(deepCopy)是增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存,

    JSON方法实现深拷贝

    //_tmp和result是相互独立的,没有任何联系,有各自的存储空间。
    let deepClone = function (obj) {
        let _tmp = JSON.stringify(obj);//将对象转换为json字符串形式
        let result = JSON.parse(_tmp);//将转换而来的字符串转换为原生js对象
        return result;
    };
    
    let obj1 = {
        weiqiujaun: {
            age: 20,
            class: 1502
        },
        liuxiaotian: {
            age: 21,
            class: 1501
        }
    };
    
    let test = deepClone(obj1);
    console.log(test);
    
    
  • 相关阅读:
    CheckBox循环删除代码
    最小二乘法原理
    break_VS_continue
    check the sentence &ff
    check_return
    check_FunctionAddress
    while执行两次的问题,已经解决
    CalculationWithDifferenceTpye
    SaveAboutZero
    check_negation
  • 原文地址:https://www.cnblogs.com/kawayi/p/14426377.html
Copyright © 2011-2022 走看看