Middle
41
questionbank

Какими способами можно клонировать объект в JavaScript?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech
  • Спред-оператор ... (Shallow Copy).
  • Object.assign() (Shallow Copy).
  • JSON.parse(JSON.stringify(obj)) (Deep Copy, но с ограничениями).
  • Рекурсивная функция (Deep Copy).
  • Библиотеки (например, Lodash с методом _.cloneDeep(), Deep Copy).

Сравнение Shallow vs. Deep Copy:

Тип клонированияОписаниеПример
Shallow CopyКопирует поверхностные свойства. Вложенные объекты остаются по ссылке.const newObj = { ...origObj }; / const newObj = Object.assign({}, origObj);
Deep CopyКопирует все свойства, включая вложенные объекты и массивы.const newObj = JSON.parse(JSON.stringify(origObj)); / Функция глубокого копирования / _.cloneDeep(origObj)

Ограничения JSON.parse(JSON.stringify(obj)):

  • Не копирует функции.
  • Не копирует undefined.
  • Не копирует Symbol.
  • Не копирует циклические ссылки.
  • Преобразует Date объекты в строки.
  • Преобразует NaN, Infinity и -Infinity в null.

Пример shallow copy со спред-оператором:

javascript

Пример глубокого копирования с JSON.parse(JSON.stringify()):

javascript

Пример рекурсивной функции для глубокого копирования:

javascript