Давайте разберемся с методами поверхностного и глубокого копирования с объектами JavaScript. Есть несколько способов копировать объекты в JavaScript. Некоторые из них делают поверхностные копии, а некоторые — глубокие. Если мы хотим скопировать объект, мы можем сделать это следующими способами. Давайте посмотрим на примерах

Неглубокое копирование

Просто присвоить объект1 объекту2 с равным знаком «=». Это создает поверхностную копию объекта. Это означает, что он создает ссылку на родительский объект. Если мы изменим какое-либо значение скопированного объекта, это повлияет и на исходный объект. Пример :

В приведенном выше примере мы назначаем объект personOne для copyOne. Это означает, что мы создаем копию объекта personOne. Если мы изменим любое значение объекта copyOne, объект personOne также изменится. В результате мы видим, что оба объекта обновлены. Это мы назвали поверхностным копированием.

Глубокое копирование

Если мы хотим скопировать объект и обновить копию, не затрагивая исходный родительский объект, нам нужно использовать методы глубокого копирования. Глубокая копия означает, что изменения для копий не повлияют на исходный объект. Для этого мы можем использовать метод JSON или оператор Spread.

Пример 1. Использование JSON.parse(JSON.stringify(obj))

Здесь мы можем создать глубокую копию исходного объекта personTwo. Если мы изменим значение в объекте copyTwo, это не повлияет на объект personTwo. Используя этот JSON.parse(JSON.stringify(obj))метод, мы можем создать глубокую копию.

Пример 2. Использование оператора спреда {…obj}

Еще один способ добиться глубокого копирования — использовать оператор распространения {…obj}. Также создается глубокая копия родительского объекта. Если мы изменим какое-то значение в объекте copyThree, это не повлияет на объект personThree.

Краткое содержание

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

Связаться

Linkedin -> https://www.linkedin.com/in/tharaka-udayanga-61a424166/