Работа с функцией JavaScript Object.assign
TechnoFunnel представляет еще одну статью, посвященную клонированию объекта с помощью функции Object.assign в JavaScript. Object.assign - еще один отличный способ скопировать объект в другой объект. Посмотрим, сможем ли мы выполнить глубокое или поверхностное копирование с помощью этого метода.
Для других методов копирования объекта вы можете обратиться к следующему:
Что такое Object.assign в JavaScript
Object.assign используется для копирования пары ключ-значение одного объекта в другой. Давайте поищем приведенный ниже код, чтобы понять, как работает это ключевое слово.
В приведенном выше коде мы создали новый пустой объект с помощью «{}», а затем мы просим JavaScript скопировать пары ключ-значение объекта «userDetails» во вновь созданный пустой объект. Вновь созданный объект создает отдельную область памяти для сохранения значений.
Однако это ключевое слово также можно использовать для копирования пар ключ-значение из нескольких объектов. После создания пустого объекта мы можем передать в эту функцию столько объектов, сколько захотим. Пара "ключ-значение" всех этих объектов будет скопирована в этот вновь созданный объект. Давайте посмотрим с помощью примера ниже.
В приведенном выше коде мы передали этой функции несколько объектов. Пара ключ-значение всех этих объектов будет скопирована во вновь созданный объект. Давайте добавим отладчик в код, чтобы увидеть скопированный набор значений.
В приведенном выше коде мы видим, что пара значений ключа «userDetails» и «userAddressDetails» была скопирована в результирующий объект.
Преимущества Object.assign
- Пользователь может копировать несколько объектов с помощью Object.assign
- Функции также могут быть скопированы в результирующий объект
Недостатки Object.assign
- Объекты не глубоко клонированы
Вышеуказанный метод не создает глубокую копию объекта, если один из ключей объекта «userDetails» или «userAddressDetails» является комплексным значением, содержащим некоторые дополнительные объекты / функции / массивы, он копируется по ссылке в новый объект.
На изображении выше мы можем видеть, что свойство «address» как «userDetails», так и «newUserDetails» равно true, что означает, что оба объекта указывают на одно и то же место в памяти. Следовательно, доказательство того, что глубокая копия не выполняется.
Следите за нашим каналом на YouTube:
А также наша средняя публикация: