繁体   English   中英

用于IE11的ES6代理Polyfill

[英]ES6 Proxy Polyfill for IE11

IE11不会也不会实现ES2015代理对象。 然而,IE11的延长支持终止于2025年10月14日。

有没有办法为IE11 polyfill代理对象? 所有其他浏览器都支持Proxy。

如果是,那么我们今天都可以在生产中使用它。 如果没有,那么我们将不得不等待近十年......

编辑:我专门针对IE11,因为我知道IE通常具有我通常不知道的IE特定功能。

Edit2:我特别感兴趣的是能够实现一个全能拦截器。 类似于Python中的__getattr__ 它只需要在IE11中工作。

你能得到的最好的是github:GoogleChrome / proxy-polyfill

根据巴贝尔文档

由于ES5的限制,代理不能被转换或填充。

关于Quora的这个问题有一个非常简洁的答案

代理需要在引擎级别上提供支持,并且无法对polyfill Proxy进行支持。

大多数主要的JS引擎尚未实现支持。 查看ECMAScript 6兼容性表

您可能希望使用Object.observe,可能使用Chrome浏览器以外的浏览器进行polyfill,但即使这样,该提案也已撤消,并且已宣布将在未来版本中将其从Chrome中删除。

我个人没有尝试过Object.observe解决方案,但它可能是一个很好的起点。

祝好运!

在不支持此功能的环境中直接解决填充ES6代理的问题,当然是不可能的 - 如果存储一些polyfill函数信息window.Proxy的意思。 但是如果这样思考,ES6的大多数现代功能都无法支持,因为它们会引发旧版ECMAScript引擎的语法错误。

这就是为什么你应该使用transpiler,它执行前面的ES6代码包装到特定的结构中,然后评估旧引擎上的转换代码。 在目前的情况下,只需使用一个Babel插件: https//www.npmjs.com/package/babel-plugin-proxy

当然,在使用此解决方案时,您应该将Webpack配置为根据其功能集发现来隔离不同客户端代理/浏览器的目标包。 详情请见: https//gist.github.com/newyankeecodeshop/79f3e1348a09583faf62ed55b58d09d9

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM