Различные ловушки JSON.stringify() для глубокого копирования

При наличии в объекте элемента типа времени — Дата будет преобразована в строковые данные.

Затем вы будете удивлены, обнаружив, что ни getTime() нельзя настроить, ни getYearFull(). Все встроенные методы Date нельзя изменить. Однако можно вызывать все встроенные методы string.

Если в объекте есть данные undefined или Function — — undefined и Function будут потеряны напрямую

Затем вы увидите, что оба типа данных исчезли.

Объект станет нулевым, если он имеет значения NaN, бесконечность и -бесконечность

1.7976931348623157E+10308 – максимальная верхняя строка числа с плавающей запятой. Отображается как бесконечность.

-1,7976931348623157E+10308 – это минимальная нижняя строка числа с плавающей запятой, отображаемая как -Infinity.

Когда циклическая ссылка на объект сообщит об ошибке

Если вам посчастливилось скопировать такой объект ↓

Потом вы видите, что ничего из этого не работает.

Вы все еще используете JSON.stringify() для реализации глубокого копирования?

Если это так, будьте осторожны. Авторы рекомендуют использовать рекурсивную глубокую копию для глубокой копии в будущем.

Краткое содержание

Если в объекте есть Дата, после сериализации он станет строкой.

Если это неопределенные и функциональныеданные в объекте, они будут потеряны сразу после сериализации.

Если в объекте есть NaN, Infinity, -Infinity, после сериализации он покажет null.

Если на объект ссылаются по кругу, он напрямую сообщит об ошибке.

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Посетите наш Community Discord и присоединитесь к нашему Коллективу талантов.