Копирование объектов в JavaScript: Подробное руководство с примерами

1. Клонирование с помощью spread оператора (...)

Spread оператор (...) - это удобный способ создания поверхностных копий объектов. Он создает новый объект и копирует все свойства из исходного объекта в новый.

const originalObject = { a: 1, b: 2 };
const copiedObject = { ...originalObject };

console.log(copiedObject); // { a: 1, b: 2 }

2. Метод Object.assign()

Метод Object.assign() также позволяет создавать поверхностные копии объектов. Он принимает целевой объект (в который будут скопированы свойства) и один или несколько исходных объектов.

const originalObject = { a: 1, b: 2 };
const copiedObject = Object.assign({}, originalObject);

console.log(copiedObject); // { a: 1, b: 2 }

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

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

С использованием библиотеки lodash:

const _ = require('lodash');
const originalObject = { a: 1, b: { c: 2 } };
const copiedObject = _.cloneDeep(originalObject);

console.log(copiedObject); // { a: 1, b: { c: 2 } }

С использованием рекурсивной функции:

function deepClone(obj) {
   if (obj === null || typeof obj !== 'object') {
       return obj;
   }
   let clone = Array.isArray(obj) ? [] : {};
   for (let key in obj) {
       clone[key] = deepClone(obj[key]);
   }
   return clone;
}

const originalObject = { a: 1, b: { c: 2 } };
const copiedObject = deepClone(originalObject);

console.log(copiedObject); // { a: 1, b: { c: 2 } }

Глубокое клонирование обеспечивает независимую копию всех вложенных объектов и массивов.

В завершение, выбор метода копирования объектов в JavaScript зависит от конкретных потребностей вашего проекта. Используйте соответствующий метод в зависимости от того, требуется ли вам поверхностная копия или полностью независимая копия с вложенными объектами.

Комментарии

Коментарии отсутствуют, будьте первым(ой) кто напишет под этим постом!

Написать коментарий