Proxy

Proxy是什么?
第一次听说proxy的时候,是vue3上线之后,响应式原理更改为proxy做代理(取缔object.defineProperty),作用就是代理。
代理?怎么越看越迷糊,阮大佬对其的解释是:

Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。
Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”。

个人理解是:你在对目标对象做操作时,例如打点获取proxy对象的某个属性时,proxy中的get函数会对此次操作进行拦截,执行完get方法后,你所获得的值,是get方法的返回值。
代码:

  let obj={
    name:'tjq',
    age:18
  }
  //创建一个新的proxy对象
  let pro =new Proxy(obj,{
  //get拦截
    get(tag,val)
    {
    //tag:被代理的对象,这里指obj变量  val,调取的属性名,例如下面,我调取的是name属性
      console.log('get==',tag,val);
      return '这个是我proxy给你的值'  //可以设置 return tag[val] 来返回对应的属性值
    }
  })
  //我们在获得name属性时,会自动调取get函数,拿到该函数的返回值
  console.log(pro.name);//打印结果是----这个是我proxy给你的值

需要注意的是,并非仅仅有get的拦截,还有set、apply、construct等等的拦截

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值