Что такое поверхностная копия (shallow copy)
Объекты и прототипы
Поверхностная копия (shallow copy) — это копия объекта, в которой скопирован только верхний уровень, а вложенные объекты остаются общими ссылками с оригиналом.
Что происходит
Примитивные поля верхнего уровня копируются как значения, а вложенные объекты/массивы — как ссылки на те же самые объекты.
const original = { name: 'Ann', address: { city: 'Москва' } };
const copy = { ...original };
copy.name = 'Bob'; // не влияет на original (примитив)
copy.address.city = 'Питер'; // влияет — общий вложенный объект!
original.address.city; // 'Питер'Способы создать shallow copy
const c1 = { ...obj };
const c2 = Object.assign({}, obj);
const c3 = arr.slice();
const c4 = [...arr];Когда достаточно
- Плоские объекты без вложенности.
- Иммутабельное обновление только верхнего уровня (React-состояние):
setState({ ...state, count: state.count + 1 });Ограничение
Мутация вложенного объекта в копии затронет оригинал — главная ловушка. При вложенности нужна глубокая копия (structuredClone).
Коротко для собеседования
Shallow copy копирует верхний уровень; вложенные объекты остаются общими ссылками ({...obj}, Object.assign). Подходит для плоских структур и иммутабельного обновления верхнего уровня. При вложенности используют structuredClone.