Работа с функцией JavaScript Object.assign

TechnoFunnel представляет еще одну статью, посвященную клонированию объекта с помощью функции Object.assign в JavaScript. Object.assign - еще один отличный способ скопировать объект в другой объект. Посмотрим, сможем ли мы выполнить глубокое или поверхностное копирование с помощью этого метода.

Для других методов копирования объекта вы можете обратиться к следующему:





Что такое Object.assign в JavaScript

Object.assign используется для копирования пары ключ-значение одного объекта в другой. Давайте поищем приведенный ниже код, чтобы понять, как работает это ключевое слово.

В приведенном выше коде мы создали новый пустой объект с помощью «{}», а затем мы просим JavaScript скопировать пары ключ-значение объекта «userDetails» во вновь созданный пустой объект. Вновь созданный объект создает отдельную область памяти для сохранения значений.

Однако это ключевое слово также можно использовать для копирования пар ключ-значение из нескольких объектов. После создания пустого объекта мы можем передать в эту функцию столько объектов, сколько захотим. Пара "ключ-значение" всех этих объектов будет скопирована в этот вновь созданный объект. Давайте посмотрим с помощью примера ниже.

В приведенном выше коде мы передали этой функции несколько объектов. Пара ключ-значение всех этих объектов будет скопирована во вновь созданный объект. Давайте добавим отладчик в код, чтобы увидеть скопированный набор значений.

В приведенном выше коде мы видим, что пара значений ключа «userDetails» и «userAddressDetails» была скопирована в результирующий объект.

Преимущества Object.assign

  1. Пользователь может копировать несколько объектов с помощью Object.assign
  2. Функции также могут быть скопированы в результирующий объект

Недостатки Object.assign

  1. Объекты не глубоко клонированы

Вышеуказанный метод не создает глубокую копию объекта, если один из ключей объекта «userDetails» или «userAddressDetails» является комплексным значением, содержащим некоторые дополнительные объекты / функции / массивы, он копируется по ссылке в новый объект.

На изображении выше мы можем видеть, что свойство «address» как «userDetails», так и «newUserDetails» равно true, что означает, что оба объекта указывают на одно и то же место в памяти. Следовательно, доказательство того, что глубокая копия не выполняется.

Следите за нашим каналом на YouTube:



А также наша средняя публикация: