ES6 Proxy兼容polyfill实现

Proxy 可以拦截对象的读取、修改遍历等操作,这个polyfill只支持get和set。

通过defineProperty和VBScript实现。

低版本浏览器Object.defineProperty用__defineGetter__、__defineSetter__实现。

所以target的属性必需先定义。

调用例子:

var person = {
	name: "张三"
};
var proxy = new Proxy(person, {
	set:function(target, property, value) {
		if(property in target) {
			alert("set "+property+":"+value);
		}else{
			throw "Property \"" + property + "\" does not exist.";
		}
	}
});
proxy.name="李四";

代码https://github.com/linsk1998/proxy-polyfill/blob/master/proxy.js

演示http://raw.githack.com/linsk1998/proxy-polyfill/master/index.html

转载于:https://my.oschina.net/linsk1998/blog/1627161

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值