资讯专栏INFORMATION COLUMN

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

Batkid / 2552人阅读

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

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://www.ucloud.cn/yun/84145.html

相关文章

  • 【ES6】改变 JS 内置行为的代理反射

    摘要:通过对这些底层内置对象的代理陷阱和反射函数,让开发者能进一步接近引擎的能力。显然,与要求代理目标对象必须是一个函数,这两个代理陷阱在函数的执行方式上开启了很多的可能性,结合使用就可以完全控制任意的代理目标函数的行为。 代理(Proxy)可以拦截并改变 JS 引擎的底层操作,如数据读取、属性定义、函数构造等一系列操作。ES6 通过对这些底层内置对象的代理陷阱和反射函数,让开发者能进一步接...

    lushan 评论0 收藏0
  • 《深入理解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(反射) Proxy: 代理: var duixaing = { name:小胖, age:25, sex:男 } duixaing.name=老胖; console.log(duixaing.name);//打印:老胖。 console.log(duixaing);//打印:...

    张红新 评论0 收藏0

发表评论

0条评论

Batkid

|高级讲师

TA的文章

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