1. 程式人生 > >js 數據監聽--對象的變化

js 數據監聽--對象的變化

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 數據監聽--對象的變化