Вы здесь:

Копирование (клонирование) объекта:

let user = {
  name: "John",
  age: 30
};

let clone = Object.assign({}, user);

но это ПОВЕРХНОСТНОЕ КОПИРОВАНИЕ. Н.п. при клонировании такого объекта:

let user = {
name: "John",
    sizes: {
    height: 182,
    width: 50
    }
};

let clone = Object.assign({}, user); // клонируется в ПУСТОЙ объект "{}"
// поле "sizes" НЕ БУДЕТ СКЛОНИРОВАНО.
alert( user.sizes === clone.sizes ); // true, тот же объект

// user и clone обладают общим свойством sizes
user.sizes.width++;       // изменяем свойства в первом объекте
alert(clone.sizes.width); // 51, видим результат в другом

Для полного копиования возьмите готовую реализацию, например _.cloneDeep(obj) из библиотеки JavaScript lodash. (https://learn.javascript.ru/object-copy)