Копирование объектов JavaScript без ссылок: подробное руководство

При работе с объектами JavaScript часто необходимо создать копию объекта без ссылки на оригинал. Это предотвращает непреднамеренные изменения исходного объекта при внесении изменений в копию. В этой статье мы рассмотрим несколько способов достижения этой цели и приведем примеры кода.

Метод 1: использование оператора расширения
Оператор распространения (…) — это краткий способ копирования объекта без каких-либо ссылок. Вот пример:

const originalObject = { name: 'John', age: 25 };
const copiedObject = { ...originalObject };
copiedObject.name = 'Jane';
console.log(originalObject.name);  // Output: John
console.log(copiedObject.name);    // Output: Jane

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

const originalObject = { name: 'John', age: 25 };
const copiedObject = Object.assign({}, originalObject);
copiedObject.name = 'Jane';
console.log(originalObject.name);  // Output: John
console.log(copiedObject.name);    // Output: Jane

Метод 3: использование JSON.parse() и JSON.stringify()
Этот метод включает преобразование объекта в строку JSON и последующий синтаксический анализ его обратно в объект. Вот пример:

const originalObject = { name: 'John', age: 25 };
const copiedObject = JSON.parse(JSON.stringify(originalObject));
copiedObject.name = 'Jane';
console.log(originalObject.name);  // Output: John
console.log(copiedObject.name);    // Output: Jane

Метод 4: использование метода Object.create()
Метод Object.create() позволяет создать новый объект с указанным объектом-прототипом. Вот пример:

const originalObject = { name: 'John', age: 25 };
const copiedObject = Object.create(Object.getPrototypeOf(originalObject));
Object.assign(copiedObject, originalObject);
copiedObject.name = 'Jane';
console.log(originalObject.name);  // Output: John
console.log(copiedObject.name);    // Output: Jane

В этой статье мы рассмотрели различные методы копирования объектов JavaScript без ссылок. В зависимости от вашего конкретного случая использования вы можете выбрать наиболее подходящий метод. Независимо от того, предпочитаете ли вы оператор распространения, методы Object.assign(), JSON или Object.create(), эти методы обеспечивают гибкость в создании независимых копий объектов в JavaScript.