js 數據監聽--對象的變化
阿新 • • 發佈:2019-04-15
observer class struct uip new turn wal equipment prope
class Observer { constructor(data) { this.data = data; this.walk(data); } walk(data) { let value; if (Object.prototype.toString.call(data) !== "[object Object]") return; for (const key in data) { if (data.hasOwnProperty(key)) { value = data[key]; if (data[key] === "[object Object]") { new Observer(data[key]); }; this.convert(key, value); } } } convert(key, value) { Object.defineProperty(this.data, key, { enumerable: true, configurable: true, get: function () { console.log(`${key},被訪問。`) return value }, set: function (newValue) { }, }) } } let data = { user: { name: 'naruto', equipment: { arms: 'kuwu', ArmGuard: 'long', } }, time: '2048', }; const app = new Observer(data);
js 數據監聽--對象的變化