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

    概念理解

    浅拷贝就是将一个对象(或数组)的内存地址『编号』复制给另一个对象(或数组)
    ===>理解为浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存
    深拷贝就是增加一个指针,并且申请一个新的内存地址,使这个增加的指针指向这个新的内存,然后将原变量对应内存地址里的值逐个复制过去
    ===>深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象

    实现方案

    jquery 有提供一个$.extend可以用来做 Deep Copy

    var $ = require('jquery');
    var obj1 = {
        a: 1,
        b: { f: { g: 1 } },
        c: [1, 2, 3]
    };
    var obj2 = $.extend(true, {}, obj1);
    console.log(obj1.b.f === obj2.b.f);
    // false`
    ####lodash
    `var _ = require('lodash');
    var obj1 = {
        a: 1,
        b: { f: { g: 1 } },
        c: [1, 2, 3]
    };
    var obj2 = _.cloneDeep(obj1);
    console.log(obj1.b.f === obj2.b.f);
    // false
    
  • 相关阅读:
    浅析值类型与引用类型的内存分配[转载]
    C#引用类型参数,ref按引用传值
    java调用WebService的例子
    poj 2727 Expectation
    IT O
    Android_notepadz
    tomcat mysql 数据源
    android_snakez
    Tomcat下配置ssl
    Android_Hello Worldz
  • 原文地址:https://www.cnblogs.com/llff123/p/9503201.html
Copyright © 2011-2022 走看看