浅拷贝的实现方法

  <script>
    //利用object.assign实现浅拷贝
    //a
    let a1 = {};
    let b1 = {name: '123'}
    Object.assign(a1, b1); 
    console.log(a1); //{name: '123'}
    //b 
    let a12={}
    let b12= {c: 1,d:{e : 2}}
    Object.assign(a12,b12);
    b12.c=5;
    b12.d.e=7;
    console.log(b12, 'b'); //{c: 5,d:{e : 7}}
    console.log(a12, 'a'); //{c: 1,d:{e : 7}}
    //利用解构运算实现浅拷贝
    //a
    let a21 = {
      name: 'xiaoming',
      age: 12
    }
    let b21 = {
      ...a21
    };
    console.log(b21);
    let arr1 = [1, 2, 3]
    let arr2 = [...arr1];
    console.log(arr2);
    //b
    let b22={c: 1,d:{e: 2}}
    let a22={...b22};
    b22.c=3;
    b22.d.e=5;
    console.log(b22, 'b22'); //{c: 3,d:{e: 5}}
    console.log(a22, 'a22'); //{c: 1,d:{e: 5}}

    // //利用concat实现浅拷贝
    let arr3 = [1, 2, 3];
    let arr4 = arr3.concat();
    console.log(arr4);
    //利用arr.slice实现浅拷贝
    let arr5 = [1, 2, {
      val: 4
    }];
    let arr6 = arr5.slice();
    console.log(arr6);
  </script>

实现浅拷贝函数

 function shallowClone(traget) {
      if (typeof target === 'object' && target !== null) {
        const cloneTarget = Array.isArray(target) ? [] : {};
        for (let prop in target) {
          if (target.hasOwnProperty(prop)) {
            cloneTarget[prop] = target[prop];
          }
        }
        return cloneTarget;
      } else {
        return target;
      }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值