用于IE11的ES6代理Polyfill

bri*_*out 30 javascript internet-explorer ecmascript-6 internet-explorer-11 es6-proxy

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

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

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

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

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

Dol*_*arr 12

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

根据巴贝尔文档:

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

  • 正如我记得并理解的那样,根据babel团队的说法,由于ES5的限制(ie11也使用),完全实现代理polyfill是不可能的,代理应该在引擎级别实现.这就是我试图解释的,当我说这个lib是你能得到的最好的.更多信息:[关于babel的github的评论](https://github.com/babel/babel/issues/71#issuecomment-59113761),[关于quora的类似问题](https://www.quora.com/Is -there-A-方式对实现-A-ES6代理-下ES5) (5认同)
  • 正如OP中多次提到的,我正在寻找IE11填充而不是ES5填充。您提到的库不支持通用的吸气剂。再次,OP明确提到了对所有吸气剂的兴趣。 (2认同)

Geo*_*rge 8

这个问题在 Quora 上有一个非常简洁的答案

代理需要引擎级别的支持,并且无法填充代理。

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

你可能想使用 Object.observe 来代替 Chrome 以外的浏览器的 polyfill,但即便如此,该提案已被撤回,并且已宣布它将在未来版本中从 Chrome 中删除。

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

祝你好运!

编辑: 感谢 Matt Jensen 在评论中指出事实上有一种方法可以使用这个包来填充ES6 代理的某些部分:github.com/GoogleChrome/proxy-polyfill

惊人的

  • 不完全正确。代理 API 的许多部分都可以进行多填充。请参阅:https://github.com/GoogleChrome/proxy-polyfill (2认同)