Глубокое клонирование объекта без JSON (Deep Clone Without JSON)
3
Объекты
Условие:
Реализуйте функцию глубокого клонирования произвольной структуры данных без использования JSON.parse/JSON.stringify. Клон должен быть полностью независим от оригинала: изменение вложенных объектов или массивов в клоне не должно влиять на исходную структуру, и наоборот.
Структура может содержать: примитивы (числа, строки, булевы значения), вложенные объекты, вложенные массивы (в том числе разреженные/с "дырками" — пустыми слотами), и произвольную глубину вложенности.
Входные данные:
Значение произвольного типа: примитив, объект или массив, с возможной вложенностью любой глубины (объекты внутри массивов, массивы внутри объектов и т.д.).
Выходные данные:
Глубокая копия входного значения той же структуры.
Ограничения:
Глубина вложенности не превышает 20 уровней
Циклические ссылки не встречаются
Значения — только примитивы, обычные объекты (plain objects) и массивы (без функций, дат, Map/Set и т.п.)
Пример:
Вход: { a: 1, b: { c: [1, 2, "3"] }, d: [] }
Выход: { a: 1, b: { c: [1, 2, "3"] } (независимая копия), d: [] }