Proxy(代办器/拦截器)Reflect反射

Proxy(代办器/拦截器)Reflect反射

Reflect和Proxy一样 都是es6用来操纵对象的 API

Proxy 代办操纵

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

        let obj = Object.create(proxy);
        obj.time // 35
        console.log(obj.time) 

Proxy()一样具有get、set要领

let obj={
            name:"小花",
            age:18,
            sex:"男"
        }

        var proxObj=new Proxy(obj,{
            set:function(target,key,value){
                if(value=="小花"){
                    target[key]=value;
                }
            },
            get:function(target,key){
                if(target[key]==undefined){
                    return "没有该属性"
                }else{
                    return target[key];
                }
            }  
        })
        proxObj.name="李小花";
        console.log(proxObj.name)

Reflect(反射)

//Reflect和Proxy一样 都是es6用来操纵对象的 API
        let obj={
            name:"小花",
            age:18,
            sex:"女"
        }

        //Reflect.defineProperty(obj,"school",{value:"师徒教诲"});
        Reflect.deleteProperty(obj,"age");
        console.log(Reflect.has(obj,"sex"));
        console.log(obj);
        var proxObj=new Proxy(obj,{
            set:function(target,key,value){
                if(value=="小花"){
                    Reflect.set(target,key,value);
                }
            },
            get:function(target,key){
                if(target[key]==undefined){
                    return "没有该属性"
                }else{
                    return  Reflect.get(target,key);
                }
            }  
        })
        proxObj.name="李小花";
        console.log(proxObj.name)

重要就是在实行函数之前Reflect代办一下完事在实行!

    原文作者:青石巷
    原文地址: https://segmentfault.com/a/1190000010265246
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞