Для поддерживаемых типов глубокую независимую копию создаёт structuredClone. Универсально скопировать любой объект с его функциями и поведением невозможно.
Создание копии переданного объекта
Для поддерживаемых типов глубокую независимую копию создаёт structuredClone. Универсально скопировать любой объект с его функциями и поведением невозможно.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Разработать функцию, принимающую объект в качестве аргумента и возвращающую его новую копию. Функция должна создавать отдельный объект, содержащий те же свойства и значения, что и исходный, без взаимных ссылок между оригиналом и копией.
Ответ
Для поддерживаемых типов глубокую независимую копию создаёт structuredClone. Универсально скопировать любой объект с его функциями и поведением невозможно.
function cloneObject(value) {
return structuredClone(value);
}
Метод поддерживает многие встроенные типы и циклы, но не произвольные функции, DOM-узлы или сохранение любого пользовательского прототипа. Циклические связи внутри копии могут остаться, однако они не ведут в исходный граф. Для ограниченного JSON-контракта возможны более простые варианты.