Proxy

Proxy 也就是代理,可以帮助我们完成很多事情,例如对数据的处理,对构造函数的处理,对数据的验证,就是在我们访问对象前添加了一层拦截,可以过滤很多操作,而这些过滤,由你来定义。

1.语法:

let p = new Proxy(target,handler);

2.参数:

target:需要使用Proxy包装的目标对象(可以是任何类型的对象,包括原生数组,函数,甚至另一个代理)

handler:一个对象,其属性是当执行一个操作时定义代理的行为的函数(可以理解为某种触发器)

3.示例

let obj={

  name:'dayfly',

  age:100,

  gender:'男'

};

let p=new Proxy(obj,{         //get用于拦截某个数据的读取操作         get(target,property){             // return '已屏蔽';             if(property==='age'){                 return target[property]-80; //obj.age             }else{                 return 'fail';             }         } });     console.log(p.name);//fail     console.log(p.age);//20     console.log(p.a);//不存在的也返回 fail 示例二 {     let obj={         name:'dayfly',         age:100,         gender:'男'     };
    let p=new Proxy(obj,{         //set可以拦截某个属性的赋值操作         set(target,property,value){             //阻止赋值的默认行为  return fales             if(property==='age'){                 if(!Number.isInteger(value)||value>150){                     throw new TypeError('年龄不合法');                 }                 target[property]=value;             }         }             });     p.age=200;     // console.log(p.age);//在set没赋值前,使用p.age=200,是没用的     console.log(p.name);     console.log(p.age); }  
上一篇:Vue3响应式原理


下一篇:MySQL之MyBatis初体验3