Spread operator doesn't spread inherited properties
The spread operator only spreads the enumerable own properties of an object, not any inherited ones:
let o = Object.create({ x: 1 }); // o inherits the property x
let p = { ...o };
p.x // => undefined
let o = Object.create({ x: 1 }); // o inherits the property x
let p = { ...o };
p.x // => undefined