object.assign()的用法如下:
Object.assign方法用于将所有可枚举属性的值从一个或多个源对象(sources)分配到目标对象(target),并返回目标对象:Object.assign(target,...sources)。
1、对象的拷贝
源对象属性与目标对象属性不同,则会被拷贝到目标对象中;如果目标对象和源对象有相同的属性,目标对象的属性值会被源对象的属性值覆盖掉;如果有多个源对象有相同的属性,那么目标对象的属性将会被最后一个源对象属性覆盖。
2、继承属性和不可枚举属性不能拷贝
Object.assign方法拷贝的属性是有限制的,只会拷贝源对象自身的并且可枚举的属性到目标对象,继承的和不可枚举的属性不会拷贝。
3、对象的深拷贝
Object.assign()拷贝是浅拷贝,它拷贝的是属性值,假如源对象的属性值是一个对象obj,那么拷贝的则是这个对象值的指针(也就是地址);这个时候修改obj的值,则目标对象会受到影响。想要避免这种影响我们需要对对象进行深拷贝。
要注意的是,深拷贝只能解决引用类型的值拷贝,对于继承和不可枚举属性依然不可以拷贝。
4、异常会终止拷贝
5、原始类型将会被包装成对象
原始类型会被包装,null和undefined会被忽略。只有字符串的包装对象才可能有自身可枚举属性。
6、常见的用途
Object.assign方法常见的用途有为对象添加属性、为对象添加方法、克隆对象、合并多个对象、为属性指定默认值。