Отправленный вами код работает должным образом, так как свойства из A копируются в B. Однако это не пример наследования, это просто поверхностная копия.
В вашем примере все свойства являются примитивами, рассмотрим, что произойдет, если мы добавим ссылку на A:
const A = {
prop1: "value1",
prop2: function() {return this.prop1},
obj: { value: 1 }
}
const B = {
...A,
prop1: "updated_value1",
prop3: "value3"
}
Теперь, изменение A.obj.value
также изменит B.obj.value
, что по существу заставит всех B делиться своими obj
с A и между собой. Это может быть полезно в некоторых ситуациях, но это не совсем наследование.
Для наследования лучше всего использовать "Javascript классы"