赞
踩
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()
只复制属性值。
假如源对象是一个对象的引用,它仅仅会复制其引用值。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。