Proxy、Reflect

这篇写proxy、reflect的文章写的好:https://www.zhihu.com/search?type=content&q=proxy%20reflect
https://segmentfault.com/a/1190000015009255

https://segmentfault.com/a/1190000015009255
简单定义:可以用来定义对象各种基本操作的自定义行为 ,可以理解为对对象或者函数的代理操作。
注意:要对proxy实例进行操作,而不是对目标对象target进行操作,handler参数也是一个对象,用来定制拦截行为。proxy应用:https://segmentfault.com/a/1190000015009255
proxy代理:https://es6.ruanyifeng.com/#docs/proxy 语法:var proxy = new Proxy(target,handler); 例子:let person = new Proxy({},validator);person.age = 10;set和get中的obj、prop、value分别对应{}、age、10

let obj = { id: 0, name: 'Wmaker' };
        let objProxy = new Proxy(obj, {
            get(target, attr) {
                console.log(`Get ${attr}`);
                return target[attr];
            },
            set(target, attr, val) {
                console.log(`Set ${attr}`);
                target[attr] = val;
                return true;
            }
        });
        objProxy.id = 2; //
        objProxy.name; // 打印出:Get name,没有出发set,相当:obj.name;
        objProxy.name = "ss"; // 打印出:Set name,没有出发get,相当:obj.name;
        console.log(obj.id)  //2
        console.log(objProxy)  //Proxy{id:2,name:'ss'}
        console.log(objProxy.id)  //2

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容