больше об объектах

Объект.создать()

Object.create() — это статический метод, который создает новый объект из существующего объекта.

const songs = {
    name: "my song",
    genre: "jazz",
    rating: 8.1
}

const s1 = Object.create(songs);
s1.length = "04:31";   //length property added to s1 and not on songs object
console.log(s1.name);   //output => my song
s1.name = "our song";
console.log(songs.name);  //output => my song
console.log(s1.name);   //output => our song

Объект.назначить()

Object.assign() — это статический метод, который копирует все свойства исходного объекта и добавляет их к целевому объекту.

const target= {
    name: "Harry Potter",
    genre: "adventure",
}

const source= {
    name: "Harry Potter and the prisoner of azkaban",
    genre: "fantasy",
    pages: 385
}

Object.assign(target, source);
console.log(target);

Output:-
    {
      name: 'Harry Potter and the prisoner of azkaban',
      genre: 'fantasy',
      pages: 385
    }

Свойства, похожие по назначению (в нашем случае имя, жанр), будут заменены свойствами исходного объекта, а новые свойства (страницы) будут добавлены напрямую.