美文网首页
赋值、浅拷贝和深拷贝

赋值、浅拷贝和深拷贝

作者: Xu涵 | 来源:发表于2019-10-14 15:04 被阅读0次

ECMAScript的数据类型

基本数据类型

  • 基本数据类型主要是:undefined,boolean,number,string,null,symbol

  • 基本数据类型以名值存储在栈中

    let a = 1
    let b = a
    
    

    执行第一个语句之后,栈是这样的

    avatar

    执行第二个语句,就变成这样了

    avatar

    此时如果修改a的值,对b不会造成任何影响

引用数据类型的存储

  • 包括:对象、数组、函数等

  • 引用类型存储在堆中

    let person1 = {}
    let person2 = {}
    
    
    avatar
    let a = [1,2,3]
    let b = a
    
    
    avatar

    引用类型的赋值就是将a的引用给b,两者指向同一块内存,两者的操作会互相影响

    a[1] = 5
    console.log(b[1])   //5
    console.log(a === b)  //true
    
    

赋值和浅拷贝的区别

  • 赋值:简单地把变量的引用给目标变量

  • 浅拷贝:把对象的一级属性拷贝给另一个对象,但不包括子对象

  • 举个栗子:

    let a=[0,1,[2,3],4],
            b=a.slice(); //slice方法是实现浅拷贝的一种方式
    
    a[0]=1;
    a[2][0]=1;
    console.log(a,b);
    
    
    avatar

深拷贝的方法

  • 深拷贝:把一个对象的所有子对象都拷贝给另一个对象,两个对象之间互不影响

  • 常用方法:

    • 可以用递归的方法

    • 用jQuery的extend方法

    • 用json对象

      function deepClone2(obj) {
        var _obj = JSON.stringify(obj),
          objClone = JSON.parse(_obj);
        return objClone;
      }
      
      
参考资料

https://juejin.im/post/59ac1c4ef265da248e75892b

https://www.cnblogs.com/echolun/p/7889848.html

相关文章

  • 简介深浅拷贝

    深浅拷贝 python 直接赋值,浅拷贝和深拷贝 直接赋值 其实就是对象的引用 (可以理解成浅拷贝) 浅拷贝: 拷...

  • python的浅拷贝和深拷贝

    对于不可变类型,浅拷贝和深拷贝没有区别 对于不可变类型 赋值 浅拷贝 深拷贝

  • Python中的引用赋值,深拷贝,浅拷贝

    摘要:Python,引用赋值,深拷贝,浅拷贝 总结一下Python中的变量的引用赋值,深拷贝和浅拷贝,先上结论 赋...

  • 深拷贝 浅拷贝

    深入认识深拷贝 浅拷贝 公共方法 // 深拷贝 浅拷贝 对于基本类型来说 对于赋值操作 就是 深拷贝 因为值...

  • PHP之剑走偏锋的DeepCopy

    php的深拷贝和浅拷贝问题,普通变量对象的赋值 = 是深拷贝,& 是浅拷贝。 输出结果: 类对象的拷贝问题就得看下...

  • js深拷贝浅拷贝

    目录 一.数据类型 二.浅拷贝与深拷贝 三.赋值和浅拷贝的区别 四.浅拷贝的实现方式 五.深拷贝的实现方式 一.数...

  • Python底层|赋值 浅拷贝 深拷贝

    参考 python中的深拷贝和浅拷贝问题python的复制,深拷贝和浅拷贝的区别 结论 总体来说,赋值只是增加了一...

  • 深浅拷贝理解

    先看最简单的赋值 (a=b) 浅拷贝 补充说明浅拷贝 如图 深拷贝

  • 赋值 浅拷贝 深拷贝

    赋值、浅拷贝、深拷贝赋值就是完全引用原来的对象通俗的理解,浅就是外面,深就是里面。浅拷贝的意思就是只拷贝外面的一层...

  • JAVA设计模式:原型模式与拷贝

    深拷贝与浅拷贝 浅拷贝:对象A进行赋值操作得到对象B,这就是浅拷贝,修改对象A的属性会影响到B的属性 深拷贝:深拷...

网友评论

      本文标题:赋值、浅拷贝和深拷贝

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