ES6之Object.assign()详解及注意事项

Object.assign(target, object1,object2)的第一个参数是目标对象,后面可以跟一个或多个源对象作为参数。

注意target需要声明

target:参数合并后存放的对象

object1:参数1

object2:参数2

上代码

 

 结果:

我们将上面的代码做一下修改,如图

 

 结果

 

 由此可以得出, 如果目标对象与源对象有同名属性,则后面的属性会覆盖前面的属性。

如果两个源对象中含有同名对象,也会覆盖掉,并且后面的对象里的参数也会替换掉前面对象的参数。如图

 

 

 结果:

 

 

 

既然Object.assign是合并对象,那么源对象的修改会不会影响到合并后的对象呢?

看代码

 结果如图:

 从结果看,是深拷贝没错了,别急,往后看,我们再将代码做一次调整,修改child里面son的值

 

 看结果

 

 可以看出目标对象和源对象中的child都被修改了

结论:Object.assign只能深拷贝第一层 基本类型的数据。 并且第二层数据是浅拷贝,指向同一个引用

 

posted @ 2021-09-11 18:31  初生土豆  阅读(465)  评论(0编辑  收藏  举报