При копировании объектов или массивов 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

Назад