Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: json, serialization

Какие проблемы есть у JSON.stringify при копировании объектов?

Этот вопрос проверяет знание скрытых ограничений 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 подходит только для простых данных.
Для сложных структур лучше использовать специализированные методы копирования.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#json

#serialization

Подпишись на React Developer в телеграм