Если скопировать объект через Object.assign, а его свойство ссылается на другой объект, будет ли это глубокая или поверхностная копия? Если изменить вложенный profile в одном объекте, изменится ли он в другом?

Object.assign делает поверхностное копирование: вложенный profile остаётся общей ссылкой. Изменение его полей будет видно через оба объекта.

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

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

Object.assign делает поверхностное копирование: вложенный profile остаётся общей ссылкой. Изменение его полей будет видно через оба объекта.

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

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

Object.assign делает поверхностное копирование: вложенный profile остаётся общей ссылкой. Изменение его полей будет видно через оба объекта.

В const b = Object.assign({}, a) копируются собственные перечисляемые свойства a. Если выполнить b.profile.name = 'Иван', изменится общий вложенный объект. Но b.profile = { name: 'Иван' } заменит только свойство b и не переназначит a.profile.

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

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

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

Подробнее