账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    深拷贝浅拷贝的问题
    • 2019-12-04 00:00
    • 10
    255
    0

    我操作清空Data2的coilCode,Data1的数据也会变,它们是不是指向了同一内存地址,怎么解决,深拷贝吗,请问怎么用

       function(list) {
          this.Data1 = list
          this.Data2 = list
          this.Data2.forEach(i => {
            i.name = ''
          })
    5
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 爱していゐ 普通会员 1楼

      深拷贝和浅拷贝是两种不同的操作,它们在某些情况下可能会产生不同的结果。

      深拷贝是指将对象的属性复制到一个新的对象中。在大多数编程语言中,深拷贝可以使用new运算符来实现,如下所示:

      javascript let obj1 = {name: 'John', age: 30}; let obj2 = new obj1();

      在这个例子中,obj2实际上是obj1的一个新的实例,它包含obj1的所有属性。深拷贝确保了这些属性的完整性和一致性。

      然而,浅拷贝只是复制了对象的引用,而不是对象本身。这导致了如果obj1的属性发生了变化,那么obj2的属性也会相应地改变,但是如果你修改了obj1的属性,那么obj2也会自动改变。

      例如:

      javascript let obj1 = {name: 'John', age: 30}; let obj2 = obj1; obj1.age = 31; // obj2的age属性也会改变

      在上面的例子中,虽然obj2实际上是obj1的一个新的实例,但是obj2age属性改变了,而obj1age属性没有改变。

      因此,你应该根据你的需求来选择使用深拷贝还是浅拷贝。如果你需要保持对象的完整性和一致性,那么深拷贝是更好的选择。如果你只需要复制对象的引用,那么浅拷贝就足够了。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部