首先说下他是啥,官网介绍:Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”。
简单点说:proxy在目标对象的外层搭建了一层拦截,外界对目标对象的某些操作,必须通过这层拦截
// new Proxy()表示生成一个Proxy实例,target参数表示所要拦截的目标对象,handler参数也是一个对象,用来定制拦截行为
//var proxy = new Proxy(target, handler);
var target={
name:"es6高级语法",
type:"重点是..."
}
//假如目标对象是target,hander是我要怎么处理这个对象设置的机关方法,即
var handler = {
//假如我让在获取name的时候得到的数据不是“es6高级语法”而是“es6入门”
get: function(target, key) {
if(key=="name"){
target[key]="es6入门"
}
return target[key];
},
set: function(target, key, value) {
if (key !== 'type') {
target[key] = value;
}else {
console.log('不能对[' + key.toString() + ']赋值.');
}
}
}
var proxy = new Proxy(target, handler);
proxy.type="改下属性"//不能对type赋值.
网友评论