Задача

Реализуйте deepClone(value) — глубокое копирование объекта/массива. Нужно корректно обработать вложенные структуры, циклические ссылки, а также Date, Map, Set.

Пример

const obj = { a: 1, nested: { b: 2 }, list: [1, 2, 3] };
obj.self = obj; // циклическая ссылка
 
const copy = deepClone(obj);
copy.nested.b = 99;
 
obj.nested.b; // 2  (оригинал не изменился)
copy.self === copy; // true (цикл сохранён)

Решение

См. также