Чтобы скопировать объект в JavaScript, вы можете использовать различные методы. Вот несколько подходов, которые вы можете использовать:
- Использование оператора распространения (…). Оператор распространения можно использовать для создания поверхностной копии объекта. Он копирует перечислимые свойства объекта в новый объект. Однако если объект имеет вложенные объекты или массивы, они все равно будут использоваться исходным и скопированным объектами совместно.
const originalObject = { foo: 'bar', baz: 'qux' };
const copiedObject = { ...originalObject };
- Использование Object.assign(). Метод Object.assign() используется для копирования значений всех перечислимых свойств из одного или нескольких исходных объектов в целевой объект. Он возвращает целевой объект.
const originalObject = { foo: 'bar', baz: 'qux' };
const copiedObject = Object.assign({}, originalObject);
- Использование JSON.parse() и JSON.stringify(): этот метод создает глубокую копию объекта, сериализуя его в JSON и затем анализируя его обратно в новый объект. Он хорошо работает для простых объектов, но имеет ограничения при копировании функций или свойств с неопределенными значениями, значениями NaN или Infinity.
const originalObject = { foo: 'bar', baz: 'qux' };
const copiedObject = JSON.parse(JSON.stringify(originalObject));
- Использование библиотеки или служебной функции. Существует несколько популярных библиотек и служебных функций, обеспечивающих функциональность клонирования объектов, например, cloneDeep() в lodash или Extend() в jQuery.
const originalObject = { foo: 'bar', baz: 'qux' };
const copiedObject = _.cloneDeep(originalObject); // Using lodash
Помните, что эти методы создают либо поверхностную, либо глубокую копию объекта, в зависимости от используемого метода. Неглубокие копии дублируют свойства объекта, но вложенные объекты или массивы по-прежнему будут общими. Глубокие копии создают полностью независимые копии объекта и всех его вложенных свойств.