为对象属性分配默认值

为对象中所有值为undefined的属性分配默认值。

  • 使用Object.assign()创建一个新的空对象,并将原始对象复制到新对象中以保持键的顺序。
  • 使用Array.prototype.reverse()和展开运算符(...)从左到右组合默认值。
  • 最后,再次使用obj来覆盖原本有值的属性。
const defaults = (obj, ...defs) =>
  Object.assign({}, obj, ...defs.reverse(), obj);

defaults({ a: 1 }, { b: 2 }, { b: 6 }, { a: 3 }); // { a: 1, b: 2 }