国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

JavaScript設計模式之觀察者模式(發布訂閱模式)原理與實現方法示例

來源:懂視網 責編:小采 時間:2020-11-27 22:10:56
文檔

JavaScript設計模式之觀察者模式(發布訂閱模式)原理與實現方法示例

JavaScript設計模式之觀察者模式(發布訂閱模式)原理與實現方法示例:本文實例講述了JavaScript設計模式之觀察者模式(發布訂閱模式)原理與實現方法。分享給大家供大家參考,具體如下: 觀察者模式,又稱為發布訂閱模式,它定義了一種一對多的關系,讓多個觀察者對象同時監聽某一個主題對象,這個主題對象的狀態發生變化時就會通
推薦度:
導讀JavaScript設計模式之觀察者模式(發布訂閱模式)原理與實現方法示例:本文實例講述了JavaScript設計模式之觀察者模式(發布訂閱模式)原理與實現方法。分享給大家供大家參考,具體如下: 觀察者模式,又稱為發布訂閱模式,它定義了一種一對多的關系,讓多個觀察者對象同時監聽某一個主題對象,這個主題對象的狀態發生變化時就會通

本文實例講述了JavaScript設計模式之觀察者模式(發布訂閱模式)原理與實現方法。分享給大家供大家參考,具體如下:

觀察者模式,又稱為發布訂閱模式,它定義了一種一對多的關系,讓多個觀察者對象同時監聽某一個主題對象,這個主題對象的狀態發生變化時就會通知所有的觀察者對象,使得它們能夠自動更新自己的狀態。

在觀察者模式中,并不是一個對象調用另一個對象的方法,而是一個對象訂閱另一個對象的特定活動并在狀態改變后獲得通知。訂閱者也稱為觀察者,而被觀察的對象稱為發布者或主題。當發生了一個重要的事件時,發布者將會通知(調用)所有訂閱者并且可能經常以事件對象的形式傳遞消息。

思路:

① 發布者需要一個數組類型的屬性subscribers,以存儲所有的訂閱者;

② 訂閱subscribe():將新的訂閱者加入到這個數組中去;

③ 退訂unsubscribe():從訂閱者數組中刪除某個訂閱者;

④ 發布publish():循環遍歷subscribers數組中的每一個元素,并通知他們,即發送消息,意味著調用訂閱者的某個方法。因此,當用戶訂閱信息時,該訂閱者需要向subscribe()提供它的其中一個方法。

subscribe()unsubscribe()publish()三種方法都需要一個type參數,因為發布者可能觸發多個事件,而用戶可能僅選擇訂閱其中一種,而不是另外一種。

使用觀察者模式的好處:

① 支持簡單的廣播通信,自動通知所有已經訂閱過的對象。

② 頁面載入后目標對象很容易與觀察者存在一種動態關聯,增加了靈活性。

③ 目標對象與觀察者之間的抽象耦合關系能夠單獨擴展以及重用。

在JavaScript中,一般使用事件模型來替代傳統的觀察者模式。 DOM事件,也是JavaScript和DOM之間實現的一種觀察者模式。

Eg1:

監聽用戶單擊按鈕的動作,但沒有辦法預知用戶將在什么時候點擊。因此,訂閱按鈕上的click事件,當按鈕被點擊時,便向訂閱者發布此消息。

btn.addEventListener("click", function() {
 console.log("First click");
}, false);
// 可以有多個訂閱者
btn.addEventListener("click", function() {
 console.log("Second click");
}, false);
btn.click();

Eg2:

非觀察者模式:

$.ajax({
 url: './login',
 type: 'post',
 contentType: 'application/json',
 dataType:'json',
 success: function(data) {
 if(data.status === "success") { // 登錄成功,渲染header、footer
 header.setInfo(data.headerInfo);
 footer.setInfo(data.footerInfo);
 }
 }
});

觀察者模式:

$.ajax({
 ...,
 success: function(data) {
 if(data.status === "success") {
 // 登錄成功,發布登陸成功消息
 login.trigger("loginsuccess", data);
 }
 }
});
var header = (function() { // 監聽消息
 login.listen("loginsuccess", function(data){
 header.setInfo(data.headerInfo);
 });
 return {
 setInfo: function(data) {
 console.log("渲染header");
 }
 };
})();
var footer = (function() {
 login.listen("loginsuccess", function(data){
 footer.setInfo(data.navInfo);
 });
 return {
 setInfo: function(data) {
 console.log("渲染nav");
 }
 };
})();

更多關于JavaScript相關內容可查看本站專題:《javascript面向對象入門教程》、《JavaScript切換特效與技巧總結》、《JavaScript查找算法技巧總結》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》

希望本文所述對大家JavaScript程序設計有所幫助。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

JavaScript設計模式之觀察者模式(發布訂閱模式)原理與實現方法示例

JavaScript設計模式之觀察者模式(發布訂閱模式)原理與實現方法示例:本文實例講述了JavaScript設計模式之觀察者模式(發布訂閱模式)原理與實現方法。分享給大家供大家參考,具體如下: 觀察者模式,又稱為發布訂閱模式,它定義了一種一對多的關系,讓多個觀察者對象同時監聽某一個主題對象,這個主題對象的狀態發生變化時就會通
推薦度:
標簽: 模式 發布 觀察
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产精品久久国产精麻豆99网站 | 黄a毛片 | 99精品高清视频一区二区 | 国产成人亚洲综合 | 四虎91视频| 国产成人免费视频精品一区二区 | 青青国产成人久久91网站站 | 欧美日韩一区二区三区四区 | 91麻精品国产91久久久久 | 一本久道久久综合 | 国产高清在线免费视频 | 国产一区二区三区在线看 | 亚洲自拍偷拍网 | 国产亚洲精品a在线观看app | 成人日韩| 亚洲国产精品免费 | 亚洲欧美在线观看 | 日本全黄视频 | 在线观看欧美 | 亚洲区欧美 | 欧美日韩网址 | 欧美综合自拍亚洲综合百度 | 香蕉久久一区二区三区 | 精品国产一区二区三区免费看 | 国内精品视频在线观看 | 国产精品亚洲综合一区 | 国产成人a一区二区 | 久久久久777777人人人视频 | 黄色毛片免费在线观看 | 亚洲欧美日韩激情在线观看 | 亚洲福利在线观看 | 波多野结衣在线免费观看 | 精品在线观看国产 | 日本伊人久久 | 大香伊人中文字幕精品 | 国产最新在线视频 | 中文字幕日韩欧美 | 国产成人精品一区二三区在线观看 | 午夜国产电影 | 国产在线精品一区二区高清不卡 | 日韩中文在线观看 |