ES6中的Proxy用来为对象的基本操作,设置用户自定义行为。
例如:属性查找,赋值,枚举,函数调用,等等。
例如:代理对象的属性读取
var handler = {
get: function(target, name){
return name in target?
target[name] :
37;
}
};
var p = new Proxy({}, handler);
p.a = 1;
p.b = undefined;
console.log(p.a, p.b); // 1, undefined
console.log('c' in p, p.c); // false, 37
例如:代理函数的调用和构造
var f=function(){
alert(1);
};
var p=new Proxy(f,{
apply:function(){
alert(2); //2
f(); //1
},
construct:function(){
alert(3); //3
f(); //1
}
});
p(); //2 1
new p; //3 1