ES6-Proxy,代理

Posted ananiah

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6-Proxy,代理相关的知识,希望对你有一定的参考价值。

proxy 代理 Es6 增强 对象和函数(方法)
 
Proxy用于修改某些操作的默认行为,即对编程语言层面进行修改,属于“元编程”,
Proxy意思为“代理”,即在访问对象之前建立一道“拦截”,任何访问该对象的操作之
前都会通过这道“拦截”,即执行Proxy里面定义的方法。
 
 
声明 Proxy 第一个大括号放对象体 第二个放预处理机制    get set apply
let pro  = new Proxy(
    //方法体
    add:function(val)
        return val+100;
    ,
    name:ananiah
,
    //预处理机制 get set apply
    //get 得到属性前预处理
    get:function(target,key,property)
        console.log(target); //add: ƒ, name: "ananiah"
        console.log(key); //name
        return target[key]
    ,
    set:function(target,key,value,receiver)
        console.log(`setting $key = $value`); //setting name = 代理

        //返回之后打印出来的才会改变
        return target[key] = value + 123;
    
);
console.log(pro.name);
pro.name=代理;
console.log(pro.name);  //name 代理123

//apply
let target = function()
     return  ananiah;

let handler = 
    apply(target,ctx,args)
        console.log(apply start);
        return Reflect.apply(...arguments); //apply start
    
;
let proxx = new Proxy(target,handler);
//调用
console.log(proxx()) //ananiah

 

 

以上是关于ES6-Proxy,代理的主要内容,如果未能解决你的问题,请参考以下文章

es6-proxy

ES6-Proxy and Reflect

透明代理正向代理反向代理的区别说明

透明代理反向代理,正向代理

代理模式(静态代理jdk动态代理CGLib动态代理)

设计模式 结构型模式 -- 代理模式(动态代理(CGLIB动态代理)三种代理的对比(静态代理动态代理(JDK代理和CGLIB代理)优缺点使用场景))