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

事件驅(qū)動(dòng)作為javascript的一個(gè)重大特性,而事件驅(qū)動(dòng)的實(shí)現(xiàn)原理正是訂閱發(fā)布模式,本文為大家奉獻(xiàn)簡單的訂閱發(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對(duì)象實(shí)現(xiàn)事件的綁定,解綁,觸發(fā)等

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

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

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

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