ES6中的代理模式 proxy

Proxy 对象用于定义基本操作的自定义行为如属性查找,赋值,枚举,函数调用等


1.基本语法:

let p = new Proxy(target, handler);

target是你要代理的对象.它可以是JavaScript中的任何合法对象.如: (数组, 对象, 函数等等)


handler是你要自定义操作方法的一个集合.


p是一个被代理后的新对象,它拥有target的一切属性和方法.只不过其行为和结果是在handler中自定义的.

const target = {
  someProp: 1
}
const handler = {
  get: function(target, key) {
    return key in target ?
      target[key] :
    'Doesn't exist!';
  }
}
const proxy = new Proxy(target, handler);
console.log(proxy.someProp) // 1
console.log(proxy.someOtherProp) // Doesn't exist!

2.Proxy的作用

1、 拦截和监视外部对对象的访问

2、 降低函数或类的复杂度

3、 在复杂操作前对操作进行校验或对所需资源进行管理。


代理跟特性很相似,特性是对同一个对象的操作,数据不能在当前属性下存储,存储在备份中,代理是对不同的对象的操作,数据可以直接存储在当前属性下,原对象属性没有发生改变

你可能感兴趣的:(ES6中的代理模式 proxy)