资讯专栏INFORMATION COLUMN

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

张红新 / 2234人阅读

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(接口,文档);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/84128.html

相关文章

  • 《深入理解ES6》笔记——代理Proxy)和反射Reflection)API(12)

    摘要:方法与代理处理程序的方法相同。使用给目标函数传入指定的参数。当然,不用反射也可以读取的值。的例子我们可以理解成是拦截了方法,然后传入参数,将返回值赋值给,这样我们就能在需要读取这个返回值的时候调用。这种代理模式和的代理有异曲同工之妙。 反射 Reflect 当你见到一个新的API,不明白的时候,就在浏览器打印出来看看它的样子。 showImg(https://segmentfault....

    ZHAO_ 评论0 收藏0
  • 《深入理解ES6》笔记——代理Proxy)和反射Reflection)API(12)

    摘要:方法与代理处理程序的方法相同。使用给目标函数传入指定的参数。当然,不用反射也可以读取的值。的例子我们可以理解成是拦截了方法,然后传入参数,将返回值赋值给,这样我们就能在需要读取这个返回值的时候调用。这种代理模式和的代理有异曲同工之妙。 反射 Reflect 当你见到一个新的API,不明白的时候,就在浏览器打印出来看看它的样子。 showImg(https://segmentfault....

    shiina 评论0 收藏0
  • Proxy(代理器/截器)Reflect反射

    摘要:代理器拦截器反射和一样都是用来操作对象的代理操作代理器同样具有方法小花男小花没有该属性李小花反射和一样都是用来操作对象的小花女师徒教育小花没有该属性李小花主要就是在执行函数之前代理一下完事在执行 Proxy(代理器/拦截器)Reflect反射 Reflect和Proxy一样 都是es6用来操作对象的 API Proxy 代理操作 Proxy代理器 var proxy =...

    Batkid 评论0 收藏0
  • ES6 Reflect(反射) Proxy(代理截器)

    摘要:反射一样都是用来操作对象的接口女师徒师徒师徒女师徒让的操作都变成函数行为女师徒代理。拦截器直接操作女女代理操作女赋值取值没有该属性女没有该属性 Reflect(反射) Reflect Proxy 一样都是 es6 用来操作对象的API(接口) var obj={ name:shi, age:19, sex:女 } //obj.school=师徒 //Object...

    zzbo 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<