js 观察者模式

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

什么是观察者模式呢?this

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

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

例子:code

    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方法中更新被观察者的时候,对应的观察者也会更新。server

相关文章
相关标签/搜索