Middle
70
0
questionbank

Какие способы клонирования объектов ты знаешь?

Ответ от нейросети sobes.tech
  • Поверхностное (Shallow copy)
  • Глубокое (Deep copy)

Поверхностное клонирование:

  • Клонируется только верхний уровень объекта.
  • Вложенные объекты остаются ссылками на те же объекты, что и в оригинале.
  • Изменения во вложенных объектах клона отразятся в оригинале, и наоборот.

Способы:

  • Спред-оператор (...)
  • Object.assign()
javascript
javascript

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

  • Клонируется сам объект и все его вложенные объекты рекурсивно.
  • Изменения в клоне не влияют на оригинал, и наоборот.

Способы:

  • JSON.parse(JSON.stringify()) (имеет ограничения, например, не клонирует функции, Date, RegExp, undefined, Infinity, NaN, Map, Set)
  • Библиотеки (например, Lodash - _.cloneDeep())
  • Рекурсивная функция (для более точного контроля)
javascript
  • Поверхностное (Shallow copy)
  • Глубокое (Deep copy)

Поверхностное клонирование:

  • Клонируется только верхний уровень объекта.
  • Вложенные объекты остаются ссылками на те же объекты, что и в оригинале.
  • Изменения во вложенных объектах клона отразятся в оригинале, и наоборот.

Способы:

  • Спред-оператор (...)
  • Object.assign()
javascript
javascript

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

  • Клонируется сам объект и все его вложенные объекты рекурсивно.
  • Изменения в клоне не влияют на оригинал, и наоборот.

Способы:

  • JSON.parse(JSON.stringify()) (имеет ограничения, например, не клонирует функции, Date, RegExp, undefined, Infinity, NaN, Map, Set)
  • Библиотеки (например, Lodash - _.cloneDeep())
  • Рекурсивная функция (для более точного контроля)
javascript

Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.

object-cloningdeepcopyshallow-copyserializationdesign-patternsmutable-objects