react - JFS polyfill: JSON 2 o JSON 3?
polyfills angular (3)
Necesito un polyfill JSON para admitir IE 7 y algunos modos IE 8 e IE 9. ¿Debo elegir JSON 2 o JSON 3 ? Obviamente, JSON 3 es una implementación más moderna, pero por ejemplo, un sitio como html5please ni siquiera lo menciona y recomienda JSON 2.
Me preguntaba lo mismo. JSON3 dice :
Cambios de JSON 2
JSON 3 ...
- Serializa correctamente los objetos primitivos de envoltura ( Issue # 28 ).
- Lanza un
TypeError
al serializar estructuras cíclicas (JSON 2 se repite hasta que la pila de llamadas se desborda).- Utiliza pruebas de características para detectar implementaciones JSON nativas rotas o incompletas (JSON 2 solo verifica la presencia de las funciones nativas). Las pruebas solo se ejecutan una vez en tiempo de ejecución, por lo que no hay un costo de rendimiento adicional al analizar o serializar valores.
A diferencia de JSON 2, JSON 3 no ...
- Agregue los métodos
toJSON()
a los prototiposBoolean
,Number
yString
. Estos no son parte de ningún estándar, y se hacen redundantes por el diseño de la implementaciónstringify()
.- Agregue los métodos
Date.prototype
toJSON()
otoISOString()
aDate.prototype
. Vea la nota sobre la serialización de la fecha a continuación.
JSON 3 es un polyfill compatible con casi todas las plataformas JavaScript. Es un reemplazo directo para JSON 2 que usa pruebas de características para detectar implementaciones JSON nativas incompletas y rotas, admite cargadores de módulos asíncronos y
has
optimizadores de software, y está diseñado para estándares de especificación.JSON 2 es un polyfill alternativo más antiguo de Douglas Crockford.
Utilice json2.js si desea mejorar el rendimiento de su página en IE7 (y posiblemente 8). Estuve felizmente usando json3 durante meses y luego vi esta pregunta e hice algunas investigaciones. Todos los jsperf se realizaron 1-2 veces más rápido con json2.js en mi máquina virtual IE7.
Un ejemplo:
html5please ha actualizado su página JSON para incluir JSON 3 como el polyfill principal para su uso, con JSON 2 tomando el asiento trasero como el reemplazo anterior.