用法
合并(混入)对象
接收 一个目标对象 和 一个或多个源对象 做参数,然后将每个源对象中 可枚举属性 和 自有属性 复制到目标对象
Object.assign(target, ...source)
// 💡 可以将一个空对象{}作为目标对象,然后合并源对象完成对象复制
原理
先调用源对象的 getter 取得属性值,然后调用目标对象上的 setter 设置属性的值
const target = { name: 'lavine', age: 25 }
const source = { name: 'lonzo', age: 22, skill: 'rap' }
Object.assign(target, source) // targrt -> { name: 'lonzo', age: 22, skill: 'rap' }
细节
- Object.assign() 对源对象执行的是 浅复制,复制的是属性值;若属性值是一个对象,复制的只是其引用值。
- 目标对象没有的属性会被添加,相同属性会被源对象的属性覆盖,若存在多个源对象,后者覆盖前者。
- 继承属性和不可枚举属性不能被拷贝。