const a = {x: "Hi", y: "Test"}
const b = ???
// b = {x: "Bye", y: "Test"}
// a = {x: "Hi", y: "Test"}
Как установить x в «Bye» без мутации?Как изменить свойство объекта без его изменения?
const a = {x: "Hi", y: "Test"}
const b = ???
// b = {x: "Bye", y: "Test"}
// a = {x: "Hi", y: "Test"}
Как установить x в «Bye» без мутации?Как изменить свойство объекта без его изменения?
Альтернативой Object.assign
является object spread operator:
const additions = { x: "Bye" }
const a = { x: "Hi", y: "Test" }
const b = { ...a, additions }
Создать копию объекта и изменить копию:
const b = Object.assign({}, a, {x: "Bye"})
ES6 имеет встроенную функцию для копирования свойств объекта, Object.assign
const b = Object.assign({}, a, {x: 'Bye'})
здесь мы создаем пустой объект, нажимаем все a
s пары ключевых значений в, а затем новые пары ключей, которые мы хотим переписать. потому что пустой объект является первым аргументом, мы мутировать, что объект, а не a
На самом деле оператор распространения desugars до Object.assign поэтому его не так много, как альтернатива, оба эквивалентны. https://github.com/tc39/proposal-object-rest-spread/blob/master/Spread.md –