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.