js 觀察者模式

2022-05-01 10:00:11 字數 862 閱讀 6986

觀察者模式定義一種一對多的關係,多個觀察者訂閱乙個主題物件,當主題物件發生改變的時候通知所有觀察者,使他們能實現更新。

具體實現方式: 定義乙個被觀察物件,定義乙個主題陣列,觀察者訂閱主題通過往陣列物件內新增**函式來實現,當主題發生改變時輪流呼叫**函式。

var subpub=)

this.topics[topic]=tmp

},//發布

publish: function

(topic)

for(var i=0; i< this.topics[topic].length; i ++)

}};subpub.subscribe('a',function

())subpub.subscribe('a',function

(a, b))

subpub.publish('a', 2, 5)

有時我們不喜歡使用那麼多this,不想把topics,uid作為被觀察物件的引數,則可借助自執行函式的封閉作用域,結合閉包原理來換一種書寫方式。

var subpub={};

(function

(sp))

topics[topic]=tmp

};//發布

sp.publish= function

(topic)

for(var i=0; i< topics[topic].length; i ++)

}}(subpub))

subpub.subscribe('a',function

())subpub.subscribe('a',function

(a, b))

subpub.publish('a', 2, 5)

Js 觀察者模式

function eventtarget eventtarget.prototype this.handlers type push handler fire function event if this.handlers event.type instanceof array removehand...

JS 觀察者模式

被觀察者 function observed 將observer註冊到observed上 observed.prototype.attach function s 產生新狀態 observed.prototype.setstate function newstate 觀察者 function obs...

JS設計模式 觀察者模式

又來更新了,昨天學了白賀翔老師的觀察者模式,分享一下,直接看 doctype html en utf 8 viewport content width device width,initial scale 1.0 document title commonutil.js script head ut...