web-zqk
function Wechat(){
        this.state = [];
        
        //    订阅
        this.subscribe = function(obj){
            this.state.push(obj)
        };
        
        //    发布
        this.publish = function(){
            this.state.forEach(function(v){
                v.natice();
            })
        };
        
        //    取消订阅
        this.unsubcribe = function(obj){
            this.state.forEach((items,index)=>{
                if(items === obj){
                    this.state.splice(index,1)
                }
            })
        };
    }
    
    var zhangsan = {
        \'name\':\'张三\',
        natice:function(){
            console.log(this.name+\'收到了新闻\')
        }
    }
    
    var lisi = {
        \'name\':\'李四\',
        natice:function(){
            console.log(this.name+\'收到了新闻\')
        }
    }
    
    var WechatPublish = new Wechat();
    //    张三和李四订阅了
    WechatPublish.subscribe(zhangsan)
    WechatPublish.subscribe(lisi)
    
    //    微信每隔2秒发布一个新闻给订阅的人    
    setInterval(function(){
        WechatPublish.publish()
        console.log(WechatPublish.state)
    },2000)
    
    //    6秒后张三实在受不了了,一怒之下取消了订阅
    setTimeout(function(){
        WechatPublish.unsubcribe(zhangsan)
        console.log(WechatPublish.state)
    },6000)

 

分类:

技术点:

相关文章: