浅谈javascript中的订阅发布模式

事件驱动作为javascript的一个重大特性,而事件驱动的实现原理正是订阅发布模式,本文为大家奉献简单的订阅发布模式。

var PubSub = {
    handlers: {}
}

PubSub.on = function(eventType, handler) {
    if(!(eventType in this.handlers)) {
        this.handlers[eventType] = []
    }
    this.handlers[eventType].push(handler)
    return this 
}

PubSub.emit = function(eventType) {
    var handlerArgs = [].protoType.slice.call(arguments, 1)
    for(var i = 0; i < this.handlers[eventType].length; i++) {
        this.handlers[eventType][i].apply(this, handlerArgs);
    }
    return this;
}

PubSub.off = function(eventType, handler) {
    if(!(eventType in this.handlers)) { 
        return
    }    
    if(handler == undefined) {
        delete this.handlers[eventType]
    }
    var index = this.handlers[eventType].indexOf(handler)    
    if(index !== -1) {
        this.handlers[eventType].splice(index, 1)
    }
    return this
}

Pubsub对象实现事件的绑定,解绑,触发等

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概念 发布---订阅模式又叫观察者模式,它定义了对象间的一种一对多的关系,让多个观察者对象同时监听某一个主题对象,...
    飘落的枫阅读 394评论 0 2
  • 文|王小遥 刘镇伟是一个脑洞清奇的导演,比如,鲜少有人会不断搬起石头砸自己的脚后跟。而他一砸再砸,砸的很开心。《情...
    作者经纪人阅读 250评论 0 1
  • vim 是什么? vim是一个的操作文本的编辑器,对文本进行添加、删除、复制、粘贴,虽然无法做到IDE实现的一些功...
    柏龙阅读 286评论 0 2
  • 夫道者;以寂灭为体。修者;以离相为宗。 道的本质是寂灭,因此修道的人以不驻留于各种相为根本来进行修持。 故经云:寂...
    Zhenzen阅读 5,946评论 0 1