ES6之Object.assign()详解及注意事项
Object.assign(target, object1,object2)的第一个参数是目标对象,后面可以跟一个或多个源对象作为参数。
注意target需要声明
target:参数合并后存放的对象
object1:参数1
object2:参数2
上代码
结果:
我们将上面的代码做一下修改,如图
结果
由此可以得出, 如果目标对象与源对象有同名属性,则后面的属性会覆盖前面的属性。
如果两个源对象中含有同名对象,也会覆盖掉,并且后面的对象里的参数也会替换掉前面对象的参数。如图
结果:
既然Object.assign是合并对象,那么源对象的修改会不会影响到合并后的对象呢?
看代码
结果如图:
从结果看,是深拷贝没错了,别急,往后看,我们再将代码做一次调整,修改child里面son的值
看结果
可以看出目标对象和源对象中的child都被修改了
结论:Object.assign只能深拷贝第一层 基本类型的数据。 并且第二层数据是浅拷贝,指向同一个引用