Мне нужен JSON polyfill для поддержки IE 7 и некоторых режимов IE 8 и IE 9. Должен ли я выбрать JSON 2 или JSON 3? Очевидно, что JSON 3 - это более современная реализация, но, например, сайт html5please не упоминает об этом и рекомендует JSON 2.
JSON polyfill: JSON 2 или JSON 3?
Ответ 1
HTML5 Пожалуйста, обновил свою страницу JSON, чтобы включить JSON 3 в качестве основного polyfill для использования, а JSON 2 с задним сиденьем как более старая замена.
Ответ 2
Мне было интересно то же самое. JSON3 говорит:
Изменения от JSON 2
JSON 3...
- Правильно сериализует примитивные объекты-обертки (Проблема № 28).
- Выбрасывает
TypeError
при сериализации циклических структур (JSON 2 повторяется до тех пор, пока стек вызовов не переполнится).- Использует тесты функций для обнаружения сломанных или неполных встроенных реализаций JSON (JSON 2 проверяет наличие собственных функций). Тесты выполняются только один раз во время выполнения, поэтому при анализе или сериализации значений нет дополнительных затрат на производительность.
В отличие от JSON 2, JSON 3 не...
- Добавьте методы
toJSON()
к прототипамBoolean
,Number
иString
. Они не являются частью какого-либо стандарта и сделаны избыточными по дизайну реализацииstringify()
.- Добавьте методы
toJSON()
илиtoISOString()
вDate.prototype
. См. Примечание о сериализации даты ниже.
JSON 3 - это polyfill совместимый с почти на всех платформах JavaScript. Это замена для JSON 2, который использует функциональные тесты для обнаруживать сломанные и неполные встроенные JSON-реализации, поддерживает асинхронные загрузчики модулей и
has
- оптимизировать и создать к стандартам спецификации.JSON 2 - это более старая альтернатива polyfill Дугласом Крокфордом.
Ответ 3
Используйте json2.js, если вы хотите повысить производительность своей страницы в IE7 (и, возможно, 8). Я с удовольствием использовал json3 в течение нескольких месяцев, а затем я увидел этот вопрос и сделал некоторые исследования. Все jsperf выполняются на 1-2 раза быстрее с json2.js в моей IE7 VM.
Один пример: