Получение независимой копии объекта

Для этого объекта подходит structuredClone: он скопирует и внешний объект, и вложенный address. Spread создаст только поверхностную копию и оставит address общим.

Короткий ответ

Что ответить на собеседовании

Для этого объекта подходит structuredClone: он скопирует и внешний объект, и вложенный address. Spread создаст только поверхностную копию и оставит address общим.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо создать копию объекта, которая не будет ссылаться на исходный объект.

let originalUser = {
  name: 'Igor',
  age: 19,
  address: {
    city: 'Petersburg'
  }
}

Ответ

Для этого объекта подходит structuredClone: он скопирует и внешний объект, и вложенный address. Spread создаст только поверхностную копию и оставит address общим.

const copiedUser = structuredClone(originalUser);
copiedUser.address.city = 'Moscow';
console.log(originalUser.address.city); // Petersburg

Для известной небольшой структуры можно обойтись без универсального клонирования: { ...originalUser, address: { ...originalUser.address } }. structuredClone работает с поддерживаемыми данными и циклами, но не копирует функции, DOM-узлы или произвольное поведение классов. JSON round-trip для общего случая теряет типы и значения; здесь он не нужен.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее