1// const data = {
2// name: 'zhangsan',
3// age: 20,
4// }
5const data = ['a', 'b', 'c'];
6
7const proxyData = new Proxy(data, {
8 get(target, key, receiver) {
9 // 只处理本身(非原型的)属性
10 const ownKeys = Reflect.ownKeys(target);
11 if (ownKeys.includes(key)) {
12 console.log('get', key); // 监听
13 }
14
15 const result = Reflect.get(target, key, receiver);
16 return result; // 返回结果
17 },
18 set(target, key, val, receiver) {
19 // 重复的数据,不处理
20 if (val === target[key]) {
21 return true;
22 }
23
24 const result = Reflect.set(target, key, val, receiver);
25 console.log('set', key, val);
26 // console.log('result', result) // true
27 return result; // 是否设置成功
28 },
29 deleteProperty(target, key) {
30 const result = Reflect.deleteProperty(target, key);
31 console.log('delete property', key);
32 // console.log('result', result) // true
33 return result; // 是否删除成功
34 },
35});