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);//沒有該屬性
相關文章
相關標籤/搜索