前端代码深浅拷贝四种方式

今天公司的实习生有问我代码怎么深拷贝

下面我就给大家整理四种前端代码深拷贝的四种方式

前端数据分为基本数据类型引用数据类型,当我们拷贝引用数据类型的时候,我们希望改变新数组(对象)不改变原本的数组(对象),我们往往会深拷贝数据。下面是四种深拷贝数据的方法

深拷贝方式一

首先给大家说一种最简单也最常用一种深拷贝

JSON.parse(JSON.stringify(引用数据类型))

  <script>
    let obj={name:'尚雷砺',age:23,sex:'男'}
    let newObj=JSON.parse(JSON.stringify(obj))
    console.log(obj===newObj);//false
  </script>

深拷贝方式二

在我们的jquery中也可以深拷贝

注意:使用jquery中的深拷贝已经要引入jquery

我这里就使用远程的jquery连接了

 <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
  <script>
    let obj={name:'尚雷砺',age:23,sex:'男'}
    let newObj=$.extend(true, {}, obj);
    console.log(obj===newObj);//false 
  </script>

深拷贝方式三

除了这两种方式,你也可以手写深拷贝

<script>
    const deepCopy = obj => {
      if (obj) {
        var result = Array.isArray(obj) ? [] : {};
        for (var key in obj) {
          if (obj.hasOwnProperty(key)) {
            if (typeof obj[key] === 'object') {
              result[key] = deepCopy(obj[key]);
            } else {
              result[key] = obj[key];
            }
          }
        }
        return result;
      }
    }
    let obj = { name: '尚雷砺', age: 23, sex: '男' }
    let newObj = deepCopy(obj)
    console.log(obj === newObj);//false 
  </script>

浅拷贝方式四

Object.assign()对象的拷贝

Object.assign(target, ...sources)    【target:目标对象】,【souce:源对象(可多个)】

  <script>
    let obj = { name: '尚雷砺', age: 23, sex: '男' }
    let newObj = Object.assign({}, obj);
    console.log(obj === newObj);//false 
  </script>

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值