Proxy + Reflect 实现 响应的数据变化
Proxy 对象用于定义基本操作的自定义行为(如属性查找,赋值,枚举,函数调用等)
let p = new Proxy(target, handler);
- get(target, propKey, receiver):拦截对象属性的读取,比如proxy.foo和proxy['foo']。
- set(target, propKey, value, receiver):拦截对象属性的设置,比如proxy.foo = v或proxy['foo'] = v,返回一个布尔值。
let handler = { get(target,key) { //如果得到的值是一个对象我们还得再调一次 if(typeof target[key]=='object') { return new Proxy(target[key],handler) } return Reflect.get(target,key); }, set(target,key,value) { if(key==='length') { return true; } update(); return Reflect.set(target,key,value); } }; let obj = { a:{a:1}, b:2, d:[1,2,3,4] }; function update() { console.log('更新视图') }; let p = new Proxy(obj,handler); obj.c=3; console.log(obj)
Reflect.get(target,key);   相当于    target{key] 
 Reflect.set(target,key,value);   相当于  target[key}= value;
输出:
{ a: { a: 1 }, b: 2, d: [ 1, 2, 3, 4 ], c: 3 }
 
    越努力越幸运

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号