Этот вопрос проверяет понимание того, как копируются объекты в JavaScript и чем отличается копирование ссылок от копирования значений.
Поверхностное копирование — это копирование объекта, при котором копируются только его свойства первого уровня.
Если свойство содержит вложенный объект, копируется не сам объект, а ссылка на него.
В результате исходный и скопированный объект частично разделяют одни и те же данные.
Изменения во вложенных объектах будут видны в обеих копиях.
Поверхностное копирование часто используется в JavaScript, но может приводить к неожиданным эффектам, если не понимать его ограничения.
Поверхностное копирование (shallow copy) — это копирование, при котором:
создаётся новый объект
копируются только значения свойств верхнего уровня
вложенные объекты и массивы копируются по ссылке
На практике поверхностное копирование создаётся с помощью:
Object.assign
оператора расширения ...
методов массивов вроде slice
const original = {
name: 'Alex',
address: { city: 'London' }
};
const copy = { ...original };
После копирования:
original !== copy
original.address === copy.address
Это означает, что вложенный объект общий для обеих структур.
Поверхностное копирование подходит, если:
объект плоский
вложенные структуры не изменяются
используется иммутабельный подход (создание новых вложенных объектов)
Поверхностное копирование создаёт новую оболочку объекта, но не дублирует вложенные структуры. Это быстро, но требует осторожности
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию