美文网首页
proxy学习笔记

proxy学习笔记

作者: 小仙有毒_1991 | 来源:发表于2020-07-11 16:10 被阅读0次

proxy 在目标对象的外层搭建一层拦截器,外界对目标对象的操作必须经过拦截器。
var proxy = new Proxy(target,handler);

var target ={
    age:30
}

var targetWithLog = new proxy(target,{
    get:function(target,key){
        console.log(`${key} 被读取`);
        return target[key];
    },
    set:function(target,key,value){
        console.log(`${key}设置为${value}`);
        target[key] = value;
    }
})

targetWithLog.age;
targetWithLog.age = 31;
//控制台打印了日志

Proxy实例也可以作为其他对象的原型对象

var proxy = new Proxy({},{
  get:function(target,property){
    return 35;
  }
});

let obj = Object.create(proxy);

obj.time// 35

上述的get、set是不可以自定义的,是handler的13个api方法:

// 在判断代理对象是否拥有某个属性时触发该操作,比如在执行 "foo" in proxy 时。
handler.has()
// 在读取代理对象的某个属性时触发该操作,比如在执行 proxy.foo 时。
handler.get()
// 在给代理对象的某个属性赋值时触发该操作,比如在执行 proxy.foo = 1 时。
handler.set()

提到这里还要提一下Reflect对象,它是ES7新的内置对象,不能new,使用方法同Object。

let obj = {
    name:'李四',
    age:20
}
Reflect.set(obj,'name','张三')    // true,修改成功返回true
console.log(obj)    /

下来我们来实现一下私有变量拦截

let api = {
 _apiKey:'11',
 getUser:function(){},
 setUser:function(){}
}
let apiProxy = new Proxy(api,{
 has:function(target,key){
    if(key === '_apiKey'){
      return false;
    }else{
      Reflect.has(target,key);
    }
 }
})

console.log('_apiKey' in apiProxy );//false

相关文章

  • 2022-04-30_nginx之proxy_set_heade

    20220430_nginx之proxy_set_header指令学习笔记.md 1概述 proxy_set_he...

  • proxy学习笔记

    proxy 在目标对象的外层搭建一层拦截器,外界对目标对象的操作必须经过拦截器。var proxy = new P...

  • Charles Proxy 任何版本破解

    Charles Proxy使用笔记(文内有好礼) 本文假定你知道Charles Proxy(以下简称Charles...

  • ECMAScript 6学习(六)

    defineProperty() 学习书籍《ECMAScript 6 入门 》 Proxy Proxy 用于修改某...

  • Proxy学习

    Proxy使用 Proxy是一个类,要new来实例化 target指要代理的对象 handler一个对象,对tar...

  • Maven备忘

    Maven 笔记 https://www.yiibai.com/maven/enable-proxy-settin...

  • 【学习笔记】es6  Proxy

    vue3的响应式原理是通过Proxy(代理),对对象的属性值进行读写、添加、删除并进行劫持,通过Reflect(反...

  • 温故知新之ES6(四)

    希望大家看到这个字数,不要被吓到,Proxy / Reflect 真的很值得学习的 1.Proxy概述 Proxy...

  • 阮一峰es6要点总结——Proxy

    笔记,完全摘录自阮一峰 proxy的概念 proxy英文原意是代理的意思,在ES6中,可以翻译为"代理器"。它主要...

  • ES6 学习笔记(9) Proxy

    1. 概述 Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此...

网友评论

      本文标题:proxy学习笔记

      本文链接:https://www.haomeiwen.com/subject/qmabcktx.html