首页 > Web开发 > 详细

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

时间:2019-04-15 14:57:59      阅读:196      评论:0      收藏:0      [点我收藏+]
        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 数据监听--对象的变化

原文:https://www.cnblogs.com/hideonbush/p/10710536.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!