Skip to content

原型链+编译器在ES5上实现类似 ES6 proxy 的getter setter delete

Notifications You must be signed in to change notification settings

cooboyno111/jsopp-proxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

jsopp-proxy

原型链+编译器实现类似 ES6 proxy 的getter setter delete兼容IE8。其本质是变参数调用为方法调用。

只有一个原则当你使用new_Proxy建立的对象的时候使用->来访问其属性和方法。你可以理解为编译器重载了->.

其->会在编译过程中自动替换成_set,_get,或. 。

使用条件:1 一行只支持一个 ->。2 不要使用++,-- 。3 复合赋值运算符只支持五种 +=,-=,*=,/=,%= 其他的不支持。

使用方法:

java -jar jsopp.jar tproxy.js tproxy_es5.js ES5

java -jar jsopp.jar tproxy.js tproxy_es6.js ES6

源码见jsprocess.java

tproxy代码用例里以包含了大多数可能使用到的情况。

此项目是在ES5基础上实现部份ES6 Proxy功能的实验作品,未使用到ES5 Object.defineProperty意味着可以支持IE8。

在只使用基础拦截器的情况下(get set delete)可以直接使用ES6 Proxy方式进行开发,不用转换思维到Object.defineProperty。保证代码的鲁棒性和可读性。

多数情况下接近ES6 Proxy。支持不定义属性情况下拦截,支持拦截delete操作符。

编译器可选择编译为ES5/ES6模式。ES6模式将直接使用原生的Proxy。

可以实现proxy同样的代码编译到不同平台且执行结果一致。

About

原型链+编译器在ES5上实现类似 ES6 proxy 的getter setter delete

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published