开发者社区 问答 正文

对象浅拷贝和深拷贝有什么区别

对象浅拷贝和深拷贝有什么区别

展开
收起
茶什i 2019-11-22 15:29:24 1155 分享 版权
1 条回答
写回答
取消 提交回答
  • 在 JS 中,除了基本数据类型,还存在对象、数组这种引用类型。 基本数据类型,拷贝是直接拷贝变量的值,而引用类型拷贝的其实是变量的地址。

    let o1 = {a: 1}
    let o2 = o1
    
    

    在这种情况下,如果改变 o1 或 o2 其中一个值的话,另一个也会变,因为它们都指向同一个地址。

    o2.a = 3
    console.log(o1.a) // 3
    
    

    而浅拷贝和深拷贝就是在这个基础之上做的区分,如果在拷贝这个对象的时候,只对基本数据类型进行了拷贝,而对引用数据类型只是进行了引用的传递,而没有重新创建一个新的对象,则认为是浅拷贝。反之,在对引用数据类型进行拷贝的时候,创建了一个新的对象,并且复制其内的成员变量,则认为是深拷贝。

    2019-11-22 15:29:59
    赞同 展开评论
问答地址: