其他分享
首页 > 其他分享> > ES6 Proxy与Reflect实现观察者模式

ES6 Proxy与Reflect实现观察者模式

作者:互联网

   //观察者模式
        //监听对象属性的修改,如果属性值发生变化,打印出对象的属性信息(to do somthing)

        let queuedObservers = new Set()
        //将需要处理的函数,添加到set结构中
        let observe = fn => queuedObservers.add(fn)

        //需要执行的操作
        function print() {
            console.log(`${proxy.name},${proxy.age}`)
        }
        observe(print)

        //创建对象的代理对象,拦截对象属性的赋值操作
        let observable = obj => new Proxy(obj, {
            //拦截对象属性的赋值操作
            set(target, key, value, receiver) {
                //通过Reflect对目标对象进行属性的赋值
                Reflect.set(target, key, value, receiver)
                //发出通知 ( to do somthing)
                queuedObservers.forEach(observe => observe())
            }
        })

        let target = {
            name: "令狐狐冲",
            age: 18,
            __skill__: "独孤九剑"
        }
        //根据目标对象生成对应的代理对象
        let proxy = observable(target)
        proxy.name = "tom"

标签:ES6,target,对象,Reflect,observe,let,Proxy,属性,proxy
来源: https://www.cnblogs.com/lceihen/p/14449878.html