Проблема в том, что объект копируется с включенными его внутренними ссылками, это theDog.guardian
и otherDog.guardian
относятся к одному и тому же объекту.
Решением будет рекурсивное клонирование всего объекта:
const theDog = {
name: 'Totó',
guardian: { name: 'Alan Turing' }
}
const otherDog = Object.assign({}, theDog, {
name: 'Tulipa'
});
otherDog.guardian.name = 'Maria Luiza'
Также const
указывает только, что переменная не может быть изменена, а не объекты, на которые есть ссылки