簡體   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