语法:
Object.assign(target, …source)
1、Object.assign是将一个或多个源对象的自身的且可枚举的属性复制到目标对象。即,继承属性和不可枚举属性是不能拷贝的。
1 | var obj1 = Object.create({foo: 1}, { // foo是个继承属性 |
2、 该方法使用源对象的[[Get]]和目标对象的[[Set]],所以它会调用相关getter和setter。
3、 String类型和Symbol类型的属性都会被拷贝
1 | var obj1 = {a: 1}; |
4、 在出现错误的情况下,会打断后续拷贝任务,但已拷贝的会保留在目标对象
1 | var target = Object.defineProperty({}, 'foo', { |
5、 不会跳过值为null或undefined的对象
6、 针对深拷贝,需要使用其他方法。因为Object.assign()拷贝的是属性值。如果源对象的属性值是一个指向对象的引用,它也只拷贝那个引用值。
1 | var obj1 = {a: 0, b: {c: 0}}; |
7、原始类型会被包装成对象
1 | var v1 = "abc"; |