码迷,mamicode.com
首页 > 其他好文 > 详细

ES6-Proxy,代理

时间:2019-06-23 18:56:45      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:start   handler   意思   property   rop   属性   方法   声明   set   

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,代理

标签:start   handler   意思   property   rop   属性   方法   声明   set   

原文地址:https://www.cnblogs.com/Ananiah/p/11073690.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!