ES6 Reflect(反射) Proxy(代理。拦截器)

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

Reflect(反射)

Reflect Proxy 一样都是 es6 用来操作对象的API(接口)

VAR obj={
    name:'shi',
    age:19,
    sex:'女'
}
//obj.school="师徒"
//Object.definePRoPErty(obj,"school",{value:"师徒"});
Reflect.defineProperty(obj,"school",{value:"师徒"});
console.LOG(obj);//Object {name: "shi", age: 19, sex: "女", school: "师徒"}

2.让object的操作都变成函数行为


//delete obj.age
console.log(obj);//Object {name: "shi", sex: "女", school: "师徒"}
Reflect.deleteProperty(obj,'age');

console.log('sex' in obj);//true
console.log(Reflect.has(obj,'sex'));//true

Proxy(代理。拦截器)

直接操作

    var obj={
    name:'shi',
    age:19,
    sex:'女'
}
obj.name="shishi";
console.log(obj.age);//19
console.log(obj);//Object {name: "shishi", age: 19, sex: "女"}*/

代理操作

var obj={
    name:'shi',
    age:19,
    sex:'女'
}
var proxObj=new Proxy(obj,{
    //赋值
    sex:function(target,key,value){
        if(value!="shi1shi"){
            target[key]=value;
            
        }
    },
    //取值
    get:function(targer,key){
        if(targer[key]==undefined){
            return "没有该属性"
        }
    }
});
proxObj.name="shishi";
console.log(proxObj);//{name: "shishi", age: 19, sex: "女"}
console.log(proxObj.legs);//没有该属性

脚本宝典总结

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

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

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