Всякий раз, когда мы клонируем объект в javascript, вы можете создать либо глубокую копию, либо мелкую копию.

Поверхностное копирование:

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

пусть obj = {а: 10, б: 20, с: {значение: 30}}

пусть copyobj = Object.assign({}, obj);

console.log(obj) {a:10, b:20, c: {value:30}}

console.log(copyobj) {a:10, b:20, c: {value:30}}

Присвоение значения 50 ключу «a» исходного объекта не изменит значение «a» в скопированном объекте.

обж.а=50;

console.log(obj) {a:50, b:20, c: {value:30}}

console.log(copyobj) {a:10, b:20, c: {value:30}}

Присвоение значения 12 ключу «b» объекта копирования не изменит значение «b» в исходном объекте.

копиобж.б=12

console.log(obj) {a:50, b:20, c: {value:30}}

console.log(copyobj) {a:10, b:12, c: {значение:30}}

Здесь мы меняем значение свойства вложенного объекта, т.е. значение = 100, это изменение будет общим для обоих объектов.

obj.c.value=100

console.log(obj) {a:50, b:20, c: {value:100}}

console.log(copyobj) {a:10, b:12, c: {значение:100}}

Способ выполнения мелкого копирования:

  1. Использование Object.assign()