es6 Proxy对象
2:Proxy概念(阮一峰 es6 Proxy可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”。)
es6提供了Proxy构造函数 new Proxy(target,handler) 调用。可以接受俩个参数 target 目标对象,handler
参数也是一个对象,用来定制拦截行为。
例:
var a = { name: 'lxy' }
var b = new Proxy(a,{
set: function (target,key){ // set是当设置这个属性的时候触发的拦截器 。target目标对象 , key键值 ,(还可以接受一个参数就是 proxy 实例本身(严格地说,是操作行为所针对的对象 摘自 阮 es6)
if(target[key] == 'lxy'){
console.log("设置属性啦!")
}
},
get: function (target,name,value){ // 依次为目标对象、属性名、属性值和 Proxy 实例本身,(还可以接受一个参数就是 proxy 实例本身(严格地说,是操作行为所针对的对象 摘自 阮 es6)
if(target[name]){
console.log("拥有此属性");
}else console.log("并没有" +name+ "此属性" );
}
})
b.name = 1 // 设置属性啦!
b.name // 拥有此属性
b.nam //并没有nam此属性