Вопрос проверяет знание методов поверхностного копирования объектов в JavaScript и понимание их различий.
Неглубокая (поверхностная) копия создает новый объект, который содержит копии всех свойств первого уровня исходного объекта. Если свойство является примитивом, копируется его значение. Если свойство — объект или массив, копируется только ссылка на него, а не сам вложенный объект. Это означает, что изменения во вложенных структурах затронут и оригинал, и копию.
const original = { a: 1, b: { c: 2 } };
const copy = { ...original };const copy = Object.assign({}, original);const arr = [1, 2, { a: 3 }];
const copy = arr.slice();const copy = Array.from(arr);const copy = [].concat(arr);const user = {
name: 'Alice',
address: { city: 'NYC', zip: 10001 }
};
const shallowCopy = { ...user };
shallowCopy.name = 'Bob'; // не влияет на оригинал
shallowCopy.address.city = 'LA'; // влияет на оригинал!
console.log(user.address.city); // 'LA'Неглубокое копирование полезно для быстрого создания копий простых структур или когда вложенные объекты не должны быть независимыми. Для полной изоляции данных используйте глубокое копирование (например, structuredClone или JSON.parse(JSON.stringify(obj))). Выбор метода зависит от контекста: spread и Object.assign — для объектов, slice и concat — для массивов.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию