Код Senior Реализация с нуля обновлено
deepClone с циклами и типами
Условие
Глубокая копия, переживающая циклические ссылки. Поддержи Date, Map, Set, массивы и обычные объекты.
Что проверяют тесты
вложенные объекты
циклическая ссылка
Date
Map и Set
общая ссылка остаётся общей
Как подойти
Порядок критичен: сначала положить пустую копию в WeakMap, потом заполнять. Иначе рекурсия по циклической ссылке не найдёт себя и уйдёт в бесконечность. Бонус того же приёма: объект, на который ссылались дважды, скопируется один раз и останется общим - структура сохраняется точно. В браузере всё это уже есть в structuredClone, назови его.
Подсказки: 3
- WeakMap «исходный объект → его копия» решает и циклы, и общие ссылки.
- Регистрируй копию в WeakMap ДО того, как обходишь её содержимое.
- Каждый специальный тип обрабатывается отдельной веткой.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.