Proxy(代理,拦截器),Reflect(反射)

发布时间:2019-08-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Proxy(代理,拦截器),Reflect(反射)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

Proxy(代理,拦截器),Reflect(反射)

PRoxy:

  • 代理:

VAR duixaing = {
        "name":"小胖",
        "age":25,
        "sex":"男"
    }
    duixaing.name="老胖";
    console.LOG(duixaing.name);//打印:老胖。
    console.log(duixaing);//打印:Object {name: "老胖", age: 25, sex: "男"}。
            
    var obj = {
        "name":"小胖",
        "age":25,
        "sex":"男"
    }
  • 拦截:

var porxObj = new Proxy(obj,{
        set:function(traget,key,value){
            if(value == "老胖"){
                traget[key]=value;
            }
        },
        get:function(traget,key){
            if(traget[key]==undefined){
                return "我没有该属性";
            }else{
                return traget[key];
            }
        }
    });
    porxObj.name="老胖";
    console.log(obj);//打印:Object {name: "老胖", age: 25, sex: "男"}。
    console.log(porxObj.xh);//打印:我没有该属性。
    console.log(porxObj.name);//打印:老胖。
    //set:设置属性;
    //get:获取属性;
注释:Proxy要传两个值,第一个值是要代理的对象,第二个值是要做哪些操作;

Reflect:

var obj = {
        name:"老胖",
        age:21,
        sex:"男"
    }
            
    //Object.defineProPErty(obj,"school",{value:"师徒教育"});
  • 定义属性:

Reflect.defineProperty(obj,"school",{value:"师徒教育"});
    console.log(obj);
    //让Object操作变为函数行为:
    //delete obj.name;
    Reflect.deleteProperty(obj,"name");
    console.log(obj);
    console.log(Reflect.has(obj,"age"));
    //是否有没有这个属性,如果返回true,没有返回false;
  • Reflect对象的方法与Proxy对象的方法一一对应:

var porxObj = new Proxy(obj,{
    set:function(traget,key,value){
        if(value == "老胖"){
            Reflect.set(traget,key,value);
        }
    },
    get:function(traget,key){
        if(traget[key]==undefined){
            return "我没有该属性";
        }else{
            return Reflect.get(traget,key);
        }
    }
});
注释:Reflect一样都是es6提供的用来操作对象API(接口,文档);

脚本宝典总结

以上是脚本宝典为你收集整理的Proxy(代理,拦截器),Reflect(反射)全部内容,希望文章能够帮你解决Proxy(代理,拦截器),Reflect(反射)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。