js 数据监听--对象的变化

        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);

猜你喜欢

转载自www.cnblogs.com/hideonbush/p/10710536.html