搜尋

首頁  >  問答  >  主體

JavaScript中面向对象的的深拷贝和浅拷贝是什么?

JavaScript中面向对象的的深拷贝和浅拷贝是什么?

大神,求带!大神,求带!2831 天前874

全部回覆(2)我來回復

  • 数据分析师

    数据分析师2017-10-01 00:33:29

    JavaScript中物件導向的深拷貝和淺拷貝是什麼? -PHP中文網路問答-JavaScript中物件導向的深拷貝和淺拷貝是什麼? -PHP中文網問答

    圍觀一下哦,學習一下。

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-02-27 09:35:49

    理解深拷贝和浅拷贝之前需要弄懂一些基础概念,内存中存储的变量类型分为值类型和引用类型。

    1、值类型赋值的存储特点, 将变量内的数据全部拷贝一份, 存储给新的变量。

    例如:

    var num = 123;
    var num1=num;

    表示变量中存储的数字是 123。然后将数据拷贝一份,就是将 123 拷贝一份. 那么内存中有 2 个 数组;将拷贝数据赋值给 num2,其特点是在内存中有两个数据副本.这可以理解为浅拷贝。

    2、引用类型的赋值。

    var o={name: '张三'};
    var obj=o;

    赋值就是将 变量 o 中存储的数据拷贝一份, 然后将该数据赋值给 obj。内存中有 1 分数据,利用 obj 修改的 name 属性会影响到 o 中的 name。

    如果拷贝的时候, 将数据的所有引用结构都拷贝一份, 那么数据在内存中独立就是深拷贝;

    如果拷贝的时候, 只针对当前对象的属性进行拷贝, 而属性是引用类型这个不考虑, 那么就是浅拷贝;

    拷贝: 复制一份. 指将对象数据复制;

    在讨论深拷与浅拷的时候一定要保证对象的属性也是引用类型。


    回覆
    0
  • 取消回覆