ajax php 觀察者模式,JavaScript觀察者模式定義和dom事件實例詳解

觀察者模式(發布-訂閱模式):其定義對象間一種一對多的依賴關系,當一個對象的狀態發生改變時,所有依賴于它的對象都將得到通知。

在JavaScript中,一般使用事件模型來替代傳統的觀察者模式。

好處:

(1)可廣泛應用于異步編程中,是一種替代傳遞回調函數的方案。

(2)可取代對象之間硬編碼的通知機制,一個對象不用再顯示地調用另外一個對象的某個接口。兩對象輕松解耦。

DOM事件–觀察者模式典例

需要監控用戶點擊document.body的動作,但是我們沒有辦法預知用戶將在什么時間點擊。

所以,我們訂閱document.body上的click事件,當body節點被點擊時,body節點便向訂閱者發布這個消息!

document.body.addEventListener("click", function() {

console.log(1);

}, false);

// 可以多個訂閱者

document.body.addEventListener("click", function() {

console.log(2);

}, false);

doucment.body.click();

某網站有header頭部、nav導航、消息列表等模塊。這幾個模塊的渲染都需要獲取用戶登陸信息。

(1)一般寫法:

$.ajax({

url: './login',

type: 'post',

contentType: 'application/json',

dataType:'json',

success: function(data) {

if(data.status === "success") {

// 登錄成功,渲染header、nav

header.setInfo(data.headerInfo);

nav.setInfo(data.navInfo);

}

}

});

(2)使用觀察者模式,很輕松解耦!

$.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 nav = (function() {

login.listen("loginsuccess", function(data){

nav.setInfo(data.navInfo);

});

return {

setInfo: function(data) {

console.log("設置nav信息");

}

}

})();

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395891.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395891.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395891.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python中代碼段的標志是什么車_請問這段Python代碼是什么意思?

ord(p) - ord(a)這個意思是以 a 為序號0,計算字符p的序號。在ASCII字符集中,小寫字母a-z是連續排列的,因此如果a是0的話,那么b就是1,c就是2……以此類推。ord(p) - ord(a) 3前面一段我們解釋過了,那么這一…

servlet和jsp頁面過濾器Filter的作用及配置

剛剛有個朋友問我,Servlet的過濾器有什么作用? 現在發個帖子說明一下, 過濾器是一個對象,可以傳輸請求或修改響應。它可以在請求到達Servlet/JSP之前對其進行預處理,而且能夠在響應離開Servlet /JSP之后對其…

tar命令速查

tar -c: 建立壓縮檔案-x:解壓-t:查看內容-r:向壓縮歸檔文件末尾追加文件-u:更新原壓縮包中的文件 這五個是獨立的命令,壓縮解壓都要用到其中一個,可以和別的命令連用但只能用其中一個。下面的參數是根據需要…

附005.Docker Compose文件詳解

一 Docker Compose文件簡介 compose文件使用yml格式,主要分為了四個區域:version:用于指定當前docker-compose.yml語法遵循哪個版本services:服務,在它下面可以定義應用需要的一些服務,每個服務都有自己的名…

如何使用TensorFlow構建簡單的圖像識別系統(第2部分)

by Wolfgang Beyer沃爾夫岡拜爾(Wolfgang Beyer) 如何使用TensorFlow構建簡單的圖像識別系統(第2部分) (How to Build a Simple Image Recognition System with TensorFlow (Part 2)) This is the second part of my introduction to building an image recognition system wi…

網站 服務器 用sqlite,sqlite服務器數據庫

sqlite服務器數據庫 內容精選換一換簡要介紹SQLite是一款輕量級的關系型數據庫,它的運算速度非常快,占用資源很少,不僅支持標準的SQL語法,還遵循了數據庫的ACID事務。編寫語言:C一句話概述:輕量級的關系型數…

type-c接口圖片_TypeC接口除了充電還能干嗎?這些功能都不知道,簡直是在浪費...

Type C手機接口相信每個使用智能手機的朋友都很熟悉,目前已經廣泛使用在智能手機領域,并且得到用戶一致好評。但是對于Type C接口真正的用處很少有人知道,大部分用戶只了解正反面都可充電,其他方面一概不知,對于這一點…

Zookeeper的api的簡單使用(轉載)

轉載自: http://www.cnblogs.com/sunddenly/p/4031881.html 1.API 2.API 示例 ZooKeeper中的組成員關系 理解ZooKeeper的一種方法就是將其看作一個具有高可用性的文件系統。但這個文件系統中沒有文件和目錄,而是統一使用“節點”(node)的概念,稱為znode…

必須使用301重定向的運用場景

必須使用301重定向的運用場景

1.1好素數

題目 題意:一個好素數的定義是,他是一個素數,然后他的左右兩邊10區間內存在素數,那么他就是好素數,現在讓你輸入一個數字,這個數字以內的好素數的數量。 解題方法:先把每一個數字是不是素數判斷…

jquery.vue.js_一個Vue.js簡介,面向只了解jQuery的人

jquery.vue.jsby Matt Rothenberg馬特羅森伯格(Matt Rothenberg) 一個Vue.js簡介,面向只了解jQuery的人 (A Vue.js introduction for people who know just enough jQuery to get by) I’ve had a love-hate relationship with JavaScript for years.我與JavaScrip…

python 矩陣獲取行數_4個最佳項目創意的代碼片段和示例,旨在為Python和機器學習構建出色的簡歷!...

點擊上方“小白學視覺”,選擇加"星標"或“置頂”重磅干貨,第一時間送達一篇文章帶你了解4個最佳項目創意的代碼片段和示例Python是一種特殊的編程語言,適用于從初學者到中級用戶。由于它的靈活性,它正逐漸成為一種非常流…

Android 多狀態加載布局的開發 Tips

2019獨角獸企業重金招聘Python工程師標準>>> 什么是多狀態 Layout 對于大多數 App 而言,項目中都有多狀態加載 View 這種需求,如下圖所示。 對應到開發中,我們通常會開發一個對應的自定義 layout 用于根據頁面不同的狀態來顯示不同…

XML解析之JAXP案例詳解

根據一個CRUD的案例&#xff0c;對JAXP解析xml技術&#xff0c;進行詳細的解釋&#xff1a; 首先&#xff0c;已知一個xml文件中的數據如下&#xff1a; <?xml version"1.0" encoding"UTF-8" standalone"no"?> <書架><書 出版社…

隨機梯度下降

1.SGD 代價函數通常可以分解成每個樣本的代價函數的總和轉載于:https://www.cnblogs.com/bigcome/p/10042800.html

iis mysql5.7_手動配置網站環境 IIS 10+PHP 7.1+MySQL 5.7

之前配置環境一直用的一鍵安裝包&#xff0c;不管是phpStudy還是lnmp&#xff0c;昨天嘗試在自己電腦配置一下iis的環境&#xff0c;也踩了一些坑&#xff0c;整理了一下。測試電腦是Windows10&#xff0c;理論上Win7和IIS7.5都支持的。安裝 IIS1&#xff1a;控制面板 > 程序…

如何使用Apache的Prediction IO Machine Learning Server構建推薦引擎

by Vaghawan Ojha通過瓦哈萬歐哈(Vaghawan Ojha) 如何使用Apache的Prediction IO Machine Learning Server構建推薦引擎 (How to build a recommendation engine using Apache’s Prediction IO Machine Learning Server) This post will guide you through installing Apache…

JavaScript DOM編程藝術第二版學習(1/4)

接下來項目需要網頁相關知識&#xff0c;故在大牛的指引下前來閱讀本書。 記錄方式&#xff1a;本書分四部分閱讀&#xff0c;完成閱讀之后會多寫一篇包括思維導圖的算是閱讀指南的東西&#xff0c;瀏覽的童鞋看著指南可以跳過一些不必要的坑~ 當前水平&#xff1a;HTML&CS…

github開源大項目_GitHub剛剛發布了一份大規模的開源指南

github開源大項目Here are three links worth your time:這是三個值得您花費時間的鏈接&#xff1a; GitHub just released a massive guide to contributing to open source (5 to 60 minute read) GitHub剛剛發布了一份有關開源的大型指南( 閱讀5至60分鐘 ) A new way to br…

mysql中where條件判斷語句_MySQL Where 條件語句介紹和運算符小結

WHERE 條件有時候操作數據庫時&#xff0c;只操作一些有條件限制的數據&#xff0c;這時可以在SQL語句中添加WHERE子句來規定數據操作的條件。語法&#xff1a;SELECT column,… FROM tb_name WHERE definitionWHERE 關鍵字后面接有效的表達式(definition)&#xff0c;該表達式…