Этот вопрос проверяет знание скрытых ограничений JSON-копирования и возможных багов.
JSON.stringify не умеет работать со всеми типами данных JavaScript.
Он удаляет функции, undefined, Symbol и методы объектов.
Также он не поддерживает циклические ссылки и специальные объекты вроде Date или Map.
Из-за этого результат копирования может отличаться от исходного объекта.
Несмотря на популярность, JSON-копирование имеет много подводных камней.
При сериализации теряются:
function
undefined
Symbol
const obj = {
a: 1,
fn: () => {},
value: undefined
};
// fn и value исчезнут
Некоторые типы преобразуются некорректно:
Date превращается в строку
Map и Set теряются
RegExp становится пустым объектом
Если объект содержит ссылку сам на себя, возникнет ошибка:
const obj = {};
obj.self = obj;
// TypeError: Converting circular structure to JSON
После копирования:
объект теряет свой прототип
методы класса недоступны
объект становится обычным Object
JSON-копирование опасно, если:
объект содержит бизнес-логику
используются классы или даты
важна точная структура данных
JSON.stringify подходит только для простых данных.
Для сложных структур лучше использовать специализированные методы копирования.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию