javascript internet-explorer ecmascript-6 internet-explorer-11 es6-proxy

javascript - ES6 Proxy Polyfill para IE11



internet-explorer ecmascript-6 (3)

Hay una respuesta bastante concisa para esta pregunta en Quora.

Los proxies requieren soporte en el nivel del motor y no es posible realizar un polyfill Proxy.

La mayoría de los motores de JS aún no han implementado soporte. Echa un vistazo a la tabla de compatibilidad ECMAScript 6 .

Es posible que desee utilizar Object.observe en su lugar, posiblemente con polyfills para otros navegadores que no sean Chrome, pero incluso entonces la propuesta se ha retirado y se ha anunciado que se eliminará de Chrome en una versión futura.

Personalmente, no he probado la solución Object.observe, pero podría ser un buen lugar para comenzar.

¡Buena suerte!

IE11 no implementa y no implementará objetos Proxy ES2015. Sin embargo, el fin de soporte extendido de IE11 es el 14 de octubre de 2025.

¿Hay alguna forma de hacer polifilinar objetos Proxy para IE11? Todos los otros navegadores son compatibles con Proxy ya.

Si es así, todos podríamos usarlo en la producción hoy. Si no, tendremos que esperar casi una década ...

Edición: estoy pidiendo específicamente para IE11, ya que sé que, por lo general, IE tiene características específicas de IE que a menudo no conozco.

Edit2: Estoy particularmente interesado en poder implementar un interceptor catch-all. Similar a __getattr__ en Python. Solo tiene que funcionar en IE11.


La solución directa para el proxy ES6 de polyfilling en entornos sin esta característica de soporte, por supuesto es imposible, si se almacena alguna ventana de información de función de polyfill. Proxy significa. Pero si piensa de esta manera, la mayoría de las características modernas de ES6 no se pueden admitir, ya que generarán un error de sintaxis para el motor ECMAScript de versión anterior.

Es por eso que debe usar Transpiler, que realiza el ajuste anterior del código ES6 en construcciones específicas, y luego evalúa el código transformado en el motor antiguo. En el caso actual, solo use un complemento de Babel: https://www.npmjs.com/package/babel-plugin-proxy

Por supuesto, mientras usa esta solución, debe configurar Webpack para segregar paquetes de destino para diferentes agentes / navegadores de clientes, dependiendo de su descubrimiento de conjunto de características. Vea los detalles aquí: https://gist.github.com/newyankeecodeshop/79f3e1348a09583faf62ed55b58d09d9