Як скопіювати об'єкт у JavaScript?
В JavaScript копіювання об'єктів може бути:
- Поверхневе копіювання — копіюються лише пропси верхнього рівня, вкладені об'єкти копіюються за посиланням.
- Глибоке копіювання — створюється повна незалежна копія, включаючи вкладені об'єкти та масиви.
Поверхневе Копіювання
Оператор Розповсюдження "(...)"
javascript
const obj = { name: "Alice", age: 25 };
const copy = { ...obj };- Простий і зрозумілий
- Копіюється лише верхній рівень
Object.assign()
javascript
const obj = { name: "Bob" };
const copy = Object.assign({}, obj);- Альтернатива оператору розповсюдження
- Також поверхневе копіювання
Глибоке Копіювання
JSON.parse(JSON.stringify(...))
javascript
const original = { user: { name: "Tom" } };
const deepCopy = JSON.parse(JSON.stringify(original));- Зручно і просто
- Не копіює функції,
undefined,Date,Map,Setтощо.
structuredClone() (вбудований метод)
javascript
const deepCopy = structuredClone(obj);- Працює з більшістю структур (включаючи
Map,Set,Date,Blob) - Безпечно і ефективно
- Потребує підтримки браузера (підтримується в сучасних браузерах)
Ручне Копіювання / Бібліотеки
lodash.cloneDeep
javascript
import cloneDeep from 'lodash/cloneDeep';
const deepCopy = cloneDeep(obj);- Підходить для складних об'єктів
- Перевірений і надійний метод
Важливо:
Просте копіювання за посиланням (const copy = obj) не створює новий об'єкт — це посилання на той самий об'єкт в пам'яті.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.