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 36
| watch(variate, method) { const obj = this.globalData; const { listenerMap } = obj; let val = obj[variate]; if (!listenerMap[variate]) { listenerMap[variate] = []; Object.defineProperty(obj, variate, { configurable: true, enumerable: true, set(value) { val = value; listenerMap[variate] && listenerMap[variate].forEach((listener) => { listener(value); }); }, get() { return val; }, }); } listenerMap[variate].push(method); }, unWatch(variate, method) { const obj = this.globalData; const index = obj.listenerMap[variate] ? obj.listenerMap[variate].indexOf(method) : -1; if (index > -1) { obj.listenerMap[variate].splice(index, 1); } },
|