Object.assign

定义

Object.assing()方法用来拷贝对象的可枚举的属性,返回值是修改后的目标对象,原目标对象也会被修改

Object.assign(target, ...sources)
  • target: 目标对象
  • soucres:要拷贝进目标对象的属性,可以是多个属性
let myObj = {
  a: 111
};
let newObj = Object.assign(myObj, {b: 222});
console.log(myObj); //  {a: 111, b: 222}
console.log(newObj);//  {a: 111, b: 222}

详解

如果sources中属性键名与目标对象的键名相同,则会覆盖目标对象的键值

let myObj = {
  a: 111
};
console.log(myObj); //{a : 111}
Object.assign(myObj, {a: 222});
console.log(myObj) // {a: 222}

后传入的键值会覆盖系先传入的相同键名的键值

let myObj = {
  a: 111
}
console.log(myObj); //{a : 111}
Object.assign(myObj, {a: 222},{a :333});
console.log(myObj) // {a: 333}

这个方法只能复制可枚举的属性和自身的属性,对目标对象target使用了get和set方法

深拷贝

Object.assing()方法可以实现一级层面的深拷贝:

let myObj = {
  a: 111
};
let newObj = Object.assign({}, myObj);
myObj.a = 222;
console.log(myObj.a); // 222
console.log(newObj.a); // 111

但是对于多层次的拷贝就是浅拷贝了:

let myObj = {
  a: 111,
  b: {
    aa: 111
  }
};
let newObj = Object.assign({}, myObj);
myObj.b.aa = 222;
console.log(myObj.b.aa); // 222
console.log(newObj.b.aa); // 222

参考
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
- http://blog.csdn.net/waiterwaiter/article/details/50267787#reply

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值