Проверяет понимание разницы между копированием по ссылке и созданием нового экземпляра объекта в JavaScript.
В JavaScript объекты хранятся по ссылке. Когда вы присваиваете объект новой переменной, обе переменные указывают на один и тот же объект в памяти. Изменение через одну переменную отразится на другой. Чтобы получить независимую копию, нужно явно создать новый объект и скопировать в него свойства.
Поверхностная копия создает новый объект, но вложенные объекты и массивы остаются общими. Это подходит, когда объект плоский или вы уверены, что вложенные структуры не будут изменяться.
const original = { name: 'Alice', address: { city: 'NYC' } };
const shallowCopy = { ...original };
shallowCopy.name = 'Bob'; // не влияет на original
shallowCopy.address.city = 'LA'; // влияет на original, так как address общийГлубокая копия рекурсивно копирует все вложенные объекты и массивы, создавая полностью независимую структуру. Современный способ — structuredClone, который поддерживается во всех современных браузерах и Node.js. Альтернатива — JSON.parse(JSON.stringify(obj)), но она не работает с функциями, undefined, Symbol и циклическими ссылками.
const deepCopy = structuredClone(original);
deepCopy.address.city = 'LA'; // не влияет на originalВывод: правильный выбор метода копирования зависит от структуры объекта и требований к независимости. Для большинства случаев в современном JavaScript используйте structuredClone, чтобы избежать неожиданных мутаций.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию