Копия имеет такое же значение, как и все остальное. Но ценность копии и ценность оригинала имеют индивидуальную независимость. Это означает, что если значение копии изменяется, исходное значение не изменяется в соответствии со значением копии.

Глубокое копирование. Глубокое копирование копирует значение исходного значения и отключается от исходного значения. Глубокая копия копирует старое значение и выделяет другое место в памяти для новой копии. Затем присвойте старое значение новой переменной или объекту.

Теперь, если мы изменим значение b=6, то значение a не изменится.

Если мы изменим значение a, то значение b не изменится.

Поверхностное копирование. Поверхностное копирование означает, что новое значение связано с исходным значением. В памяти новый объект сохранил местоположение исходного объекта. По этой причине объект копии и исходный объект зависят друг от друга. Если состояние копии или исходного объекта изменяется, это отражается на обоих.

Теперь посмотрите на приведенный выше код. Когда мы меняем значение a.name, b.name также изменяется. Это мелкая копия.

Подумайте пару минут, что если бы мы изменили значение b.name, что произошло бы с a.name. Он изменен или нет?

Поверхностное копирование похоже на любителей нибба/нибби. Если ударишь одного, другой тоже почувствует боль 😁.

Теперь главный вопрос заключается в том, как выполнить глубокое копирование объекта? Оператор Spread в JavaScript спасает вас в этой ситуации.

Но есть небольшая проблема с вложенными объектами.

Это ведет себя как поверхностная копия. Как теперь решить эту проблему?

Ха! Мы решили такие проблемы с вложенными объектами.

Первоначально опубликовано на https://sahedthought.hashnode.dev.