Object.assign用法

发布于:2022-10-13 ⋅ 阅读:(427) ⋅ 点赞:(0)

一、Object.assign是什么?

Object.assign() 方法将所有可枚举Object.propertyIsEnumerable() 返回 true)的自有Object.hasOwnProperty() 返回 true)属性从一个或多个源对象复制到目标对象,返回修改后的对象。

二、用法:

 Object.assign(target, ...sources)
 参数: target--->目标对象,接收源对象属性的对象,也是修改后的返回值。
       source--->源对象,包含将被合并的属性。
       返回值:target,即目标对象。

三、使用示例:

情景一:目标对象和源对象无重名属性

var target={name:'小明',age:18};
var source={job:'student'}
var result=Object.assign(target,source);
console.log(target,target==result);

运行结果:

我们可以看到source上的state属性合并到了target对象上。如果只是想将两个或多个对象的属性合并到一起,不改变原有对象的属性,可以用一个空的对象作为target对象。 像下面这样:

var result=Object.assign({},target,source);

情景二:目标对象和源对象有重名属性

如果目标对象与源对象具有相同的 key,则目标对象中的属性将被源对象中的属性覆盖,后面的源对象的属性将类似地覆盖前面的源对象的属性。

var target={name:'小明',age:17}
var source={job:'student',age:27}
var result=Object.assign(target,source)
console.log(target)

运行结果:

可以看到如果有同名属性的话,后面的属性值会覆盖前面的属性值。

情景二:有多个源对象

var target={name:'小明',age:17}
var source1={job:'student',age:27}
var source2={high:'180',age:25}
var result=Object.assign(target,source1,source2)
console.log(target)

运行结果:

注意:

针对深拷贝 (en-US), 需要使用其他办法,因为 Object.assign() 只复制属性值。

假如源对象是一个对象的引用,它仅仅会复制其引用值。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到