美文网首页
每日一问(三)深拷贝和浅拷贝的区别

每日一问(三)深拷贝和浅拷贝的区别

作者: 我在吉安打螺丝 | 来源:发表于2021-07-12 16:14 被阅读0次

    1.浅拷贝的定义

    创建一个新对象,然后将当前对象的非静态字段复制到该新对象,如果字段是值类型的,那么对该字段执行复制;如果该字段是引用类型的话,则复制引用但不复制引用的对象。因此,原始对象及其副本引用同一个对象
    简而言之,浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象

    2.深拷贝的定义

    深拷贝是一个整个独立的对象拷贝,深拷贝会拷贝所有的属性,并拷贝属性指向的动态分配的内存。当对象和它所引用的对象一起拷贝时即发生深拷贝。深拷贝相比于浅拷贝速度较慢并且花销较大。
    创建一个新对象,然后将当前对象的非静态字段复制到该新对象,无论该字段是值类型的还是引用类型,都复制独立的一份。当你修改其中一个对象的任何内容时,都不会影响另一个对象的内容。
    简而言之,深拷贝把要复制的对象所引用的对象都复制了一遍。

    浅拷贝只是复制了对象的引用地址,两个对象指向同一个内存地址,所以修改其中任意的值,另一个值都会随之变化,这就是浅拷贝(例:assign())

    深拷贝是将对象及值复制过来,两个对象修改其中任意的值另一个值不会改变,这就是深拷贝(例:JSON.parse()和JSON.stringify(),但是此方法无法复制函数类型)

    相关文章

      网友评论

          本文标题:每日一问(三)深拷贝和浅拷贝的区别

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