js 观察者模式

 想要成为一个优秀的人,最重要的事情是培养良好的习惯。

什么是观察者模式呢?

观察者模式 又叫做发布-订阅模式,它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,当主题对象的状态发生变化的时候,需要通知所有的观察者对象,使得他们去更新。

在观察者模式中,并不知一个对象调用另一个对象的方法,而是,一个对象订阅另一个对象的特定活动并在状态改变后获得通知。当发生了一个重要的事件的时候,发布者将会通知所有订阅者并且可能经常以事件对象的形式传递消息。

例子:

    function Observer() {
        this.fns = [];
    }
    Observer.prototype = {
        // 订阅的方法
        subscribe: function(fn) {
            this.fns.push(fn)
            console.log('这里面是啥', this.fns)
        },
        //取消订阅
        unsubscribe: function(fn) {
            this.fns = this.fns.filter(el => {
                if(el !== fn) {
                    return el;
                }
            })
        } ,
        // 更新
        update: function(o, thisObj) {
            var scope = thisObj || window;
            this.fns.forEach(el => {
                el.call(scope, o)
            });
        }
    }
    var o =new Observer;
    var f1 = function(data) {
        console.log('robbbit' + data+ 'ganhuo')
    }
    var f2 = function(data) {
        console.log('wwww' + data + "343")
    }
    o.subscribe(f1);
    o.subscribe(f2);
    o.update('tom');
    o.unsubscribe(f1);
    o.update('amy')

首先定义被观察者,被观察者是Observer函数,在该函数的原型上挂在上subscribe,unsubscribe,update三个方法,然后实例化Observer函数,然后f1,f2分别是观察者,在update方法中更新被观察者的时候,对应的观察者也会更新。

 

转载于:https://www.cnblogs.com/mn6364/p/10770546.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值