PassFront
  1. PassFront
  2. База знаний
  3. Объекты и прототипы

Что такое поверхностная копия (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.

Другие вопросы раздела