Код Senior Реализация с нуля обновлено

deepClone с циклами и типами

Условие

Глубокая копия, переживающая циклические ссылки. Поддержи Date, Map, Set, массивы и обычные объекты.

Что проверяют тесты

  • вложенные объекты

  • циклическая ссылка

  • Date

  • Map и Set

  • общая ссылка остаётся общей

Как подойти

Порядок критичен: сначала положить пустую копию в WeakMap, потом заполнять. Иначе рекурсия по циклической ссылке не найдёт себя и уйдёт в бесконечность. Бонус того же приёма: объект, на который ссылались дважды, скопируется один раз и останется общим - структура сохраняется точно. В браузере всё это уже есть в structuredClone, назови его.

Подсказки: 3
  1. WeakMap «исходный объект → его копия» решает и циклы, и общие ссылки.
  2. Регистрируй копию в WeakMap ДО того, как обходишь её содержимое.
  3. Каждый специальный тип обрабатывается отдельной веткой.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.