Всякий раз, когда мы клонируем объект в 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}}
Способ выполнения мелкого копирования:
- Использование Object.assign()