zoukankan      html  css  js  c++  java
  • 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
     
  • 相关阅读:
    android ART hook
    Bind Enum to ListControl
    注意WPF中绑定使用的是引用类型
    Android开发第2篇
    Android开发第1篇
    Extension method for type
    DB2实用命令记录
    TDD三大定律
    【InstallShield】 为什么卸载后有的文件没有删掉
    GAC write failed when upgrade with InstallShield
  • 原文地址:https://www.cnblogs.com/Ananiah/p/11073690.html
Copyright © 2011-2022 走看看