代理 我们可以创造一个代理 帮我们干某些事
优点:比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);
网友评论