对象复制(扩展对象)

今天看了对象的赋值,整理一下分享出来,希望能给需要的同仁一点点帮助。

1. 对象赋值方法是,Object.assign(target, source)  实际的底层代码理解如下:

function assign(target, ...sources) {
  // 遍历获得传进来的所有值
  for(let sourse of sourses){
   for (let key of Object.keys(source)){
    target[key] = source[key]
    }
  }
return target;
}

Object.assign({x:1},{x:2, y:3,z:4});  //{x: 2, y: 3, z: 4} 后面的值会将前面赋的值替换

以上这种方式的特点是:当出现相同的属性时,后面的属性值会覆盖前面的值。

2. 第二种方法:merge(target, sources)

以下这种方式的特点是:不覆盖已有的属性。

function merge(target,...sources){
  for(let course of sources){
    console.log(course);
    for (let key of Object.keys(course)){
      console.log(key);
      if(!(key in target)){
        target[key] = course[key]
      }
    }
  }
  return target;
}

merge({x:1},{x:2, y:3},{z:4});  // {x: 1, y: 3, z: 4}  ,前面的属性没有被覆盖

完结!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值