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/skyjs/blob/master/scenario/proxy/proxy.js

演示http://raw.githack.com/linsk1998/skyjs/master/scenario/proxy/index.html

猜你喜欢

转载自my.oschina.net/u/818899/blog/1627161