Копия имеет такое же значение, как и все остальное. Но ценность копии и ценность оригинала имеют индивидуальную независимость. Это означает, что если значение копии изменяется, исходное значение не изменяется в соответствии со значением копии.
Глубокое копирование. Глубокое копирование копирует значение исходного значения и отключается от исходного значения. Глубокая копия копирует старое значение и выделяет другое место в памяти для новой копии. Затем присвойте старое значение новой переменной или объекту.
Теперь, если мы изменим значение b=6
, то значение a
не изменится.
Если мы изменим значение a
, то значение b
не изменится.
Поверхностное копирование. Поверхностное копирование означает, что новое значение связано с исходным значением. В памяти новый объект сохранил местоположение исходного объекта. По этой причине объект копии и исходный объект зависят друг от друга. Если состояние копии или исходного объекта изменяется, это отражается на обоих.
Теперь посмотрите на приведенный выше код. Когда мы меняем значение a.name
, b.name
также изменяется. Это мелкая копия.
Подумайте пару минут, что если бы мы изменили значение b.name
, что произошло бы с a.name
. Он изменен или нет?
Поверхностное копирование похоже на любителей нибба/нибби. Если ударишь одного, другой тоже почувствует боль 😁.
Теперь главный вопрос заключается в том, как выполнить глубокое копирование объекта? Оператор Spread в JavaScript спасает вас в этой ситуации.
Но есть небольшая проблема с вложенными объектами.
Это ведет себя как поверхностная копия. Как теперь решить эту проблему?
Ха! Мы решили такие проблемы с вложенными объектами.
Первоначально опубликовано на https://sahedthought.hashnode.dev.