proxy

2019-11-05  本文已影响0人  Rui___

代理 我们可以创造一个代理 帮我们干某些事
优点:比defineProperty性能高10倍
缺点:兼容性很差 ie11 以上

// proxy 兼容性差
// 代理 我们可以创造一个代理 帮我们干某些事
// proxy 兼容性差
// 代理 我们可以创造一个代理 帮我们干某些事
let obj = {
    a:{a:2}
}
let arr=[1,2]
let handler = { // 只能代理当前这个对象 1层
    get(target,key){ // 有13中属性 symbol 11种
        // return target[key]
        if(typeof target[key] === 'object'){
            return new Proxy(target[key],handler); // 如果是对象 就返回这个对象的代理 多层对象  proxy.a 会先走get方法
        }
       return Reflect.get(target,key);
    },
    set(target,key,value){ // Reflect 反射属性13种用法
        // target[key] = value;
        if(key === 'length') return true;
        console.log('update');
        return  Reflect.set(target,key,value);
    }
}
// 对象
let proxy = new Proxy(obj,handler);
// 支持数组 可以直接更改数组 达到拦截的目的
let proxyArr = new Proxy(arr,handler)
proxyArr.push(66)
console.log(arr)
// proxy.a.a = 100
// console.log(obj.a.a);
上一篇下一篇

猜你喜欢

热点阅读