用法

合并(混入)对象

接收 一个目标对象一个或多个源对象 做参数,然后将每个源对象中 可枚举属性自有属性 复制到目标对象

  1. Object.assign(target, ...source)
  2. // 💡 可以将一个空对象{}作为目标对象,然后合并源对象完成对象复制

原理

先调用源对象的 getter 取得属性值,然后调用目标对象上的 setter 设置属性的值

  1. const target = { name: 'lavine', age: 25 }
  2. const source = { name: 'lonzo', age: 22, skill: 'rap' }
  3. Object.assign(target, source) // targrt -> { name: 'lonzo', age: 22, skill: 'rap' }

细节

  • Object.assign() 对源对象执行的是 浅复制,复制的是属性值;若属性值是一个对象,复制的只是其引用值。
  • 目标对象没有的属性会被添加,相同属性会被源对象的属性覆盖,若存在多个源对象,后者覆盖前者。
  • 继承属性和不可枚举属性不能被拷贝。