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