ES6的Proxy在IE8下的兼容处理

2,810 阅读1分钟
原文链接: github.com
[

English

]

这是一个基于 ES3Proxy构造器polyfill,支持 IE8 和 Node.js 等。

参照 ECMAScript 标准编写,无外部依赖。

由于ES3的限制,该polyfill只支持有限的'traps'代理:

  • apply
  • construct

Proxy.revocable方法也被支持,但只限于调用上面的'traps'。

安装

  1. 使用NPM:npm install es6-proxy-polyfill
  2. 直接下载:开发版本生产版本

用法

  1. 浏览器:
<script src="path/to/es6-proxy-polyfill.js" type="text/javascript"></script>
<script type="text/javascript">
    var target = function(){/* code */};
    var handler = {/* code */};
    var proxy = new Proxy(target, handler);
</script>
  1. Node.js:
require('es6-proxy-polyfill');

var target = function(){/* code */};
var handler = {/* code */};
var proxy = new Proxy(target, handler);

注意

  1. 在ES6中,对Proxy对象属性的访问将会被传递给目标对象。为了模拟这个特性,polyfill会尝试使用Object.assign方法从目标对象复制属性,因此最好先加载一个Object.assign的polyfill;
<script src="path/to/babel-polyfill.js" type="text/javascript"></script>
<script src="path/to/es6-proxy-polyfill.js" type="text/javascript"></script>
  1. 代码已经在Node.js 0.10.48 和 IE8 测试过,而且它也应该能够运行在其他环境下;
  2. 当自身属性被访问时,被撤销的Proxy对象不会抛出错误。