При копировании объектов или массивов JavaScript копирует данные только на один уровень вглубь. Этот тип копирования называется поверхностным (shallow).

Поверхностное копирование с помощью метода spread
const myObj = {
  one: 1,
  two: 2,
  three: 3,
};
 
const newObj = { ...myObj };
 
console.log(myObj === newObj);
// false
Поверхностное копирование при помощи метода Object.assign()
const myObj = {
  one: 1,
  two: 2,
  three: 3,
};
 
const newObj = Object.assign({}, myObj);
 
console.log(myObj === newObj);
// false
Поверхностное копирование function()
const myObj = {
  one: 1,
  two: 2,
  three: 3,
};
 
function shallowCopy(obj) {
  return Object.assign({}, obj);
  // или
  // return { ...obj }
}
 
const newObj = shallowCopy(myObj);
 
console.log(newObj);
// {
//  "one": 1,
//  "two": 2,
//  "three": 3
// }
 
console.log(myObj === newObj);
// false

Назад