淺談javascript中的訂閱發(fā)布模式

事件驅(qū)動作為javascript的一個重大特性,而事件驅(qū)動的實現(xiàn)原理正是訂閱發(fā)布模式,本文為大家奉獻簡單的訂閱發(fā)布模式。

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對象實現(xiàn)事件的綁定,解綁,觸發(fā)等

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 概念 發(fā)布---訂閱模式又叫觀察者模式,它定義了對象間的一種一對多的關(guān)系,讓多個觀察者對象同時監(jiān)聽某一個主題對象,...
    飄落的楓閱讀 412評論 0 2
  • 文|王小遙 劉鎮(zhèn)偉是一個腦洞清奇的導演,比如,鮮少有人會不斷搬起石頭砸自己的腳后跟。而他一砸再砸,砸的很開心?!肚?..
    作者經(jīng)紀人閱讀 273評論 0 1
  • vim 是什么? vim是一個的操作文本的編輯器,對文本進行添加、刪除、復(fù)制、粘貼,雖然無法做到IDE實現(xiàn)的一些功...
    柏龍閱讀 307評論 0 2
  • 夫道者;以寂滅為體。修者;以離相為宗。 道的本質(zhì)是寂滅,因此修道的人以不駐留于各種相為根本來進行修持。 故經(jīng)云:寂...
    Zhenzen閱讀 6,613評論 0 1

友情鏈接更多精彩內(nèi)容