封装深拷贝工具

  <script>
    function deepCopy (obj) { //深拷贝工具
      if (typeof obj !== 'object' || obj === null) {
        return obj;
      }  // 1 . 判断是否为有值对象

      let copy; // 创建拷贝体

      if (Array.isArray(obj)) { // 数组
        copy = [];
        for (let i = 0; i < obj.length; i++) {
          copy[i] = deepCopy(obj[i]); // 递归调用存储赋值
        }
      } else { // 对象
        copy = {};
        for (let key in obj) {
          if (obj.hasOwnProperty(key)) {
            copy[key] = deepCopy(obj[key]);// 递归调用存储赋值
          }
        }
      }
      return copy;
    }

    const obj1 = {
      foo: 'bar',
      nested: {
        a: 1,
        b: 2,
        c: {
          d: 4,
          e: 5
        }
      },
      arr: [1, 2, 3]
    };

    const obj2 = deepCopy(obj1);
    obj2.nested.c.d = 100000
    console.log(obj1);
    // {
    //   foo: 'bar',
    //   nested: {
    //     a: 1,
    //     b: 2,
    //     c: {
    //       d: 4,
    //       e: 5
    //     }
    //   },
    //   arr: [1, 2, 3]
    // };
    console.log(obj2);
      // {
    //   foo: 'bar',
    //   nested: {
    //     a: 1,
    //     b: 2,
    //     c: {
    //       d: 100000,
    //       e: 5
    //     }
    //   },
    //   arr: [1, 2, 3]
    // };
  </script>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值