码迷,mamicode.com
首页 > 其他好文 > 详细

ES6 Proxy与Reflect实现观察者模式

时间:2021-02-26 13:24:00      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:通过   key   get   ued   server   创建   log   proxy   监听   

   //观察者模式
        //监听对象属性的修改,如果属性值发生变化,打印出对象的属性信息(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 Proxy与Reflect实现观察者模式

标签:通过   key   get   ued   server   创建   log   proxy   监听   

原文地址:https://www.cnblogs.com/lceihen/p/14449878.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!