1. Object.assign可以实现对象的合并,或者说把src对象的属性添加到dest对象上.
2. Object.assign(dest, ...srcs) src参数可以有一个,也可以有多个,如果多个src对象有相同属性名,那么以最后一个属性值为最终传到dest对象中的值.
问题:Object.assign是浅拷贝还是深拷贝?
解答:因为此方法复制的是src的属性值,那么当src属性值是简单数据类型时,是深拷贝【深拷贝,一方变化另一方不会变化】,如果src属性是引用数据类型时,是浅拷贝【一方变化会影响另一方的值】
let src = { name: 'James' }; let dest = { age: '19' }; let src_1 = { name: 'Marry' }; Object.assign(dest, src, src_1); console.log(dest); console.log(src_1); src_1.name = 'hello'; console.log(src_1); console.log(dest);
console结果依次为:【深拷贝】
{age: '19', name: 'Marry'}
{name: 'Marry'} name: "hello"[[Prototype]]: Object
{name: 'hello'}
{age: '19', name: 'Marry'}
3. 不能在两个对象之间转移获取函数和设置函数【setter 和 getter】
4.