ES6 Proxy Polyfill для IE11

IE11 не использует и не реализует объекты прокси-сервера ES2015. Однако конец расширенной поддержки IE11 - 14 октября 2025 года.

Есть ли способ для polyfill объектов прокси для IE11? Все остальные браузеры уже поддерживают прокси.

Если да, то все мы сможем использовать его в производстве сегодня. Если нет, нам придется подождать почти десять лет...

Изменить: я спрашиваю конкретно об IE11, поскольку я знаю, что IE обычно имеет специальные функции IE, о которых я часто не знаю.

Edit2: Я особенно заинтересован в возможности реализовать перехватчик всех типов. Аналогично __getattr__ в Python. Он должен работать только в IE11.

Ответ 2

Там довольно краткий ответ на этот вопрос на Quora

Прокси требуют поддержки на уровне движка, и невозможно заполнить прокси.

Большинство основных движков JS еще не реализовали поддержку. Ознакомьтесь с таблицей совместимости ECMAScript 6.

Вместо этого вы можете использовать Object.observe, возможно, с полифилами для браузеров, отличных от Chrome, но даже тогда предложение было отозвано, и было объявлено, что оно будет удалено из Chrome в будущей версии.

Лично я не пробовал решение Object.observe, но это может быть хорошим началом.

Удачи!

EDIT: Спасибо Мэтту Дженсену в комментариях за то, что он указал, что на самом деле есть способ заполнить некоторые части прокси-сервера ES6 с помощью этого пакета: github.com/GoogleChrome/proxy-polyfill

КЛАССНО

Ответ 3

Прямое решение для полифилинга ES6 Proxy в средах без поддержки этой функции, конечно, невозможно - если хранится некоторое информационное окно функции polyfill. Но если так думать, большинство современных функций ES6 не могут быть поддержаны, потому что они повысят синтаксическую ошибку для механизма ECMAScript старой версии.

Вот почему вы должны использовать transpiler, который выполняет предшествующий обертывание кода ES6 в конкретные конструкции, а затем оценивает преобразованный код на старом движке. В текущем случае просто используйте один плагин Babel: https://www.npmjs.com/package/babel-plugin-proxy

Конечно, при использовании этого решения вы должны настроить Webpack для разделения целевых пакетов для разных клиентских агентов/браузеров в зависимости от его обнаружения набора функций. Подробнее см. Здесь: https://gist.github.com/newyankeecodeshop/79f3e1348a09583faf62ed55b58d09d9