Копирование
Полезные способы копирования объектов:
Object.assign - копирование объекта из другого
const colors = {
red: '#F00',
green: '#0F0',
blue: '#00F',
};
const _colors = Object.assign(colors, {
red: 'red', // переписываем поле
white: '#fff', // создаём новое
});
// _colors
// {
// red: 'red',
// green: '#0F0',
// blue: '#00F',
// white: '#fff'
// }
Сравнение копий объектов
const colors = {
red: '#F00',
green: '#0F0',
blue: '#00F',
};
const colors2 = colors;
const colors3 = new Object(colors);
const colors4 = { ...colors }; // Современный способ копирования (без side-effect)
// можно добавлять новые свойства
const colors5 = {
...colors,
white: '#fff',
black: '#000',
};
Схлопываем два объекта в один
bar перезатрёт значения одноимённых полей и добавит новые.
const foo = {
a: 1,
b: 2,
c: 3,
};
const bar = {
a: 10,
c: 30,
d: 40,
};
const result = {
...foo,
...bar,
};
result; // { a: 10, b: 2, c: 30, d: 40 }
Прямое сравнение объектов (side-effect)
colors === colors2; // true - храняться по одной ссылке
colors === colors3; // true - храняться по одной (new Object)
colors === colors4; // false - через spread оператор (...)
Через Object.is
Object.is(colors, colors2); // true
Object.is(colors, colors3); // true
Object.is(colors, colors4); // false