1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| function reactive(obj){ if(!isObject(obj)) return obj const observed = new Proxy(obj,{ get(target, key, receiver){ const ret = Reflect.get(target, key, receiver) console.log('getter '+ret) track(target, key) return reactive(ret) }, set(target, key, val, receiver){ const ret = Reflect.set(target, key, val, receiver) console.log('setter '+key+':'+val + '=>' + ret) trigger(target, key) return ret }, deleteProperty(target, key){ const ret = Reflect.deleteProperty(target, key) console.log('delete '+key+':'+ret) trigger(target, key) return ret }, }) return observed }
|