首页 > 其他分享 >深拷贝 浅拷贝 深拷贝浅拷贝的方法

深拷贝 浅拷贝 深拷贝浅拷贝的方法

时间:2022-11-27 13:12:14浏览次数:36  
标签:obj log 对象 数据类型 newObject 拷贝 方法

浅拷贝:浅拷贝拷贝的是对象的一层属性 如果对象里面还有对象则拷贝的是复杂数据类型的地址  浅拷贝一般使用Object.assign(给谁,拷贝谁){...对象名}

深拷贝:深拷贝拷贝的是对象的多层属性 如果对象里面还有对象 则继续拷贝 一般我们使用递归、lodash/cloneDeep或者是Json.stringify来实现

 

<body>
    <script>
      const obj = {
        uname: "张三",
        age: 18,
        family: {
          baby: "小阿三",
        },
      };
      /* 
      浅拷贝:拷贝对象的一层属性 如果对象里面还有对象(复杂数据类型)则拷贝的是地址 两者之间会相互影响 浅拷贝只适用于简单数据类型
      深拷贝:拷贝对象的多层属性 如果对象里面还有对象 则继续拷贝 一般使用递归、lodash/cloneDeep或者Json,stringify()来实现
      */

      // 方法一:浅拷贝 Object.assign(给谁,拷贝谁)
      // let newObject = {};
      // Object.assign(newObject, obj);
      // newObject.uname = "ll"; //改名
      // console.log(newObject); //这里拷贝出来的方法是一个地址

      // console.log(obj); //原对象里面的属性值没有被修改
      // newObject.family.baby = "大阿三";
      // console.log(newObject);
      // console.log(obj); //原对象里面的方法也会被修改

      // 方法2:浅拷贝 {...对象名}
      const o = { ...obj };
      // 原数据中的方法的值(复杂数据类型)又被修改了
      o.family.baby = "复杂数据类型浅拷贝拷贝的是地址";
      console.log(obj);
    </script>
  </body>

 

标签:obj,log,对象,数据类型,newObject,拷贝,方法
From: https://www.cnblogs.com/JAG2671169285/p/16929495.html

相关文章

  • 方法调用01(CasonMethod01)
    packageMethod;publicclassCasonMethod01{/*method:方法Syestem.out.println();Syestem是一个系统的类;out为一个对象,也可以说是Syestem下......
  • 设置cookies过期时间的几种方法
     默认cookies失效时间是直到关闭浏览器,cookies失效,也可以指定cookies时间。Response.Cookies("user_name").Expires=Date+1'指定cookie保存时间保留COOKIES一个小时R......
  • 盘点一个英文文本中统计关键词的方法
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【WendyZheng】问了一个英文文本中统计关键词的问题,这里拿出来给大家分享下。二、实现过程针对这个问题,本文......
  • 62.resample方法的使用
     -----------------------------------------------------------------------------------------------------------------------------------------------------------......
  • 基于桶的排序之基数排序以及排序方法总结
    基于桶的排序之基数排序以及排序方法总结作者:Grey原文地址:博客园:基于桶的排序之基数排序以及排序方法总结CSDN:基于桶的排序之基数排序以及排序方法总结说明基于桶的......
  • win7+Python3.7+Cython +pyinstaller 打包方法
    1.Cython安装(将py编译成pyd,避免反编译)、pyinstaller安装pipinstall cythonpipinstallpyinstaller 2.cython使用建立编译脚本#!/usr/bin/python#-*-coding:utf-......
  • string 类的扩展方法
     ​​string类的扩展方法​​string类的扩展方法列表(基本相同于IEnumerable<T>接口的成员列表):Aggregate<>//累加All<>//是否都满......
  • Java中Collections.sort()方法详解
     时间:2022/11/27 在我们写算法题的时候有时需要对给定的List列表进行排序,这样方便之后的操作,此时我们可以用到Collections类中的sort方法,JavaAPI文档中对该方......
  • JavaScript中String的match方法详解
     String.prototype.match()**String.prototype.match()方法返回通过一个正则表达式匹配到的字符串结果。**​​var='Thequickbrownfoxjumpsoverthelazydog.Itba......
  • 【Amadeus原创】Win10底部任务栏卡死的终极解决方法
    原因:微软自带的资讯和兴趣因国内网络限制,造成失效。解决方案:底部右键-》资讯和兴趣-》关闭。以上仅限WIn10操作系统,win11操作系统以上忽略。......