圖書信息
ISBN:978-7-115-39686-0
版次:2015年8月第一版
包裝:平裝
用紙:膠版紙
開本:小16開
印張:21
定價:59.00元
內容簡介
本書共分6篇40章。首先討論了幾種函式的編寫方式,體會JavaScript在編程中的靈活性;然後講解了面向對象編程的知識,其中討論了類的創建、數據的封裝以及類之間的繼承;最後探討了各種模式的技術,如簡單工廠模式,包括工廠方法模式、抽象工廠模式、建造者模式、原型模式、單例模式、外觀模式,以及適配器模式,本書還講解了幾種適配器、代理模式、裝飾者模式和MVC模式,討論了如何實現對數據、視圖、控制器的分離。在講解MVP模式時,討論了如何解決數據與視圖之間的耦合,並實現了一個模板生成器;講解MVVM模式時,討論了雙向綁定對MVC的模式演化。本書幾乎包含了關於JavaScript設計模式的全部知識,是進行JavaScript高效編程必備的學習手冊。
適合JavaScript初學者、前端設計者、JavaScript程式設計師學習,也可以作為大專院校相關專業師生的學習用書,以及培訓學校的教材。
作者簡介
張容銘,百度資深高級web前端研發工程師,長期工作在web前端一線上,現研發與維護百度圖片搜尋業務,曾主導百度新首頁項目改版等。喜歡鋼琴,素描,而又常帶著他的單眼各地旅行。
精彩書評
★認識張容銘是在2012年年底的時候,那時張容銘來公司實習,大家都覺得這小伙子實力不俗。而且很愛鑽研。在得知容銘利用業餘時間完成了本書的創作,作為他的朋友,真替他感到高興!短短几年,進步如此迅速,在前端實戰開發方面有著這么多的積累,有時也會讓我自愧不如。
在Web套用日益豐富的今天,越來越多的JavaScript被運用在我們的網頁中。隨著用戶體驗日益受到重視,前端的可維護性、前端性能對用戶體驗的影響開始備受關注,因此如何編寫高效的可維護的代碼,成為眾多網際網路公司爭相研究的對象。
本書通過對話的方式詳細地介紹了各種設計模式的原則和準確定義、套用方法和最佳實踐,全方位比較各種同類模式之間的異同,詳細講解不同模式的使用方法。
“極具趣味,容易理解,但講解又極為嚴謹和透徹”是本書的寫作風格和最大特點。希望大家在學到知識的同時,能夠感受到作者的風趣幽默。
最後,希望本書能夠幫助業界同仁打造出更為卓越的Web產品。
——阿里巴巴集團(淘寶) 高級Web前端 研發工程師 王鵬飛
★在百度工作的時間裡,和張容銘共事過一段時光,在相處的過程中就發現張容銘對設計模式的研究和套用有很大的熱情,投入精力很多,且在套用上有很好的理解和收穫。本書可以說是張容銘多年來積累的技術經驗的總結,涵蓋了絕大多數設計模式;敘述方面採用新人與導師對話的方式,風趣幽默、通俗易懂,非常適合JavaScript初學者和前段開發工程師學習。
——百度 高級前端研發工程師 楊坤
書籍特色
本書突破以往填鴨式著書風格,以生動有趣的故事推出一個個精彩的設計模式實踐。文中以大學剛畢業的小白同學的編程工作經歷為主線,在閱讀時可以跟著他的經歷來學習這些設計模式的具體套用。對於每種模式我們首先提出該設計模式的定義,這也就聲明了該模式的用途。隨後交代套用背景,這往往就是該種設計模式的某種套用場景。隨著故事的推進,小白所經歷的往往是讀者在項目中所經歷的,因此,很有可能會遇到小白所遇到的問題,這也正是我們需要學習的地方。最後,通過項目經理、小銘等人的幫助使小白順利的解決一道道難題,從而使小白從初學者一步步進入了工程師的角色。
目錄
第一篇 面向對象編程
第1章 靈活的語言——JavaScript 2
1.1 入職第一天
1.2 函式的另一種形式
1.3 用對象收編變數
1.4 對象的另一種形式
1.5 真假對象
1.6 類也可以
1.7 一個檢測類
1.8 方法還可以這樣用
1.9 函式的祖先
1.10 可以鏈式添加嗎
1.11 換一種方式使用方法
下章劇透
憶之獲
我問你答
第2章 寫的都是看到的——面向對象編程
2.1 兩種編程風格——面向過程與面向對象
2.2 包裝明星——封裝
2.3 傳宗接代——繼承
2.4 老師不止一位——多繼承
2.5 多種調用方式——多態
下章劇透
憶之獲
我問你答
第二篇 創建型設計模式
第3章 神奇的魔術師——簡單工廠模式
3.1 工作中的第一次需求
3.2 如果類太多,那么提供一個
3.3 一個對象有時也可代替許多類
3.4 你的理解決定你選擇的方式
下章劇透
憶之獲
我問你答
第4章 給我一張名片——工廠方法模式
4.1 廣告展現
4.2 方案的抉擇
4.3 安全模式類
4.4 安全的工廠方法
下章劇透
憶之獲
我問你答
第5章 出現的都是幻覺——抽象工廠模式
5.1 帶頭模範——抽象類
5.2 幽靈工廠——抽象工廠模式
5.3 抽象與實現
下章劇透
憶之獲
我問你答
第6章 分即是合——建造者模式
6.1 發布簡歷
6.2 創建對象的另一種形式
6.3 創建一位應聘者
下章劇透
憶之獲
我問你答
第7章 語言之魂——原型模式
7.1 語言中的原型
7.2 創建一個焦點圖
7.3 最優的解決方案
7.4 原型的拓展
7.5 原型繼承
下章劇透
憶之獲
我問你答
第8章 一個人的寂寞——單例模式
8.1 滑動特效
8.2 命名空間的管理員
8.3 模組分明
8.4 創建一個小型代碼庫
8.5 法修改的靜態變數
8.6 惰性單例
下章劇透
憶之獲
我問你答
第三篇 結構型設計模式
第9章 套餐服務——外觀模式
9.1 添加一個點擊事件
9.2 兼容方式
9.3 除此之外
9.4 小型代碼庫
下章劇透
憶之獲
我問你答
第10章 水管彎彎——適配器模式
10.1 引入jQuery
10.2 生活中的適配器
10.3 jQuery適配器
10.4 適配異類框架
10.5 參數適配器
10.6 數據適配
10.7 伺服器端數據適配
下章劇透
憶之獲
我問你答
第11章 牛郎織女——代理模式
11.1 法獲取圖片上傳模組數據
11.2 一切只因跨域
11.3 站長統計
11.4 JSONP
11.5 代理模板
下章劇透
憶之獲
我問你答
第12章 房子裝修——裝飾者模式
12.1 為輸入框的新需求
12.2 裝飾已有的功能對象
12.3 為輸入框添磚加瓦
下章劇透
憶之獲
我問你答
第13章 城市間的公路——橋接模式
13.1 添加事件互動
13.2 提取共同點
13.3 事件與業務邏輯之間的橋樑
13.4 多元化對象
下章劇透
憶之獲
我問你答
第14章 超值午餐——組合模式
14.1 新聞模組十萬火急
14.2 餐廳里的套餐業務
14.3 每個成員要有祖先
14.4 組合要有容器類
14.5 創建一個新聞類
14.6 把新聞模組創建出來
14.7 表單中的套用
下章劇透
憶之獲
我問你答
第15章 城市公車——享元模式
15.1 翻頁需求
15.2 冗餘的結構
15.3 享元對象
15.4 實現需求
15.5 享元動作
下章劇透
憶之獲
我問你答
第四篇 行為型設計模式
第16章 照貓畫虎——模板方法模式
16.1 提示框歸一化
16.2 美味的蛋糕
16.3 創建基本提示框
16.4 模板的原型方法
16.5 根據模板創建類
16.6 繼承類也可作為模板類
16.7 創建一個提示框
16.8 創建多類導航
16.9 創建導航更容易
下章劇透
憶之獲
我問你答
第17章 通信衛星——觀察者模式
17.1 團隊開發的坎坷
17.2 衛星的故事
17.3 創建一個觀察者
17.4 拉出來溜溜
17.5 使用前的思考
17.6 大顯身手
17.7 對象間解耦
17.8 課堂演練
下章劇透
憶之獲
我問你答
第18章 超級瑪麗——狀態模式
18.1 最美圖片
18.2 分支判斷的思考
18.3 狀態對象的實現
18.4 狀態對象演練
18.5 超級瑪麗
18.6 狀態的最佳化
18.7 兩種使用方式
下章劇透
憶之獲
我問你答
第19章 活諸葛——策略模式
19.1 商品促銷
19.2 活諸葛
19.3 策略對象
19.4 諸葛奇謀
19.5 緩衝函式
19.6 表單驗證
19.7 算法拓展
19.8 算法調用
下章劇透
憶之獲
我問你答
第20章 有序車站——職責鏈模式
20.1“半成品”需求
20.2 分解需求
20.3 第一站——請求模組
20.4 下一站——回響數據適配模組
20.5 終點站——創建組件模組
20.6 站點檢測——單元測試
20.7 方案確定
下章劇透
憶之獲
我問你答
第21章 命令模式
21.1 自由化創建視圖
21.2 命令對象
21.3 視圖創建
21.4 視圖展示
21.5 命令接口
21.6 大功告成
21.7 繪圖命令
21.8 寫一條命令
下章劇透
憶之獲
我問你答
第22章 駐華大使——訪問者模式
22.1 設定樣式
22.2 自娛自樂的IE
22.3 訪問操作元素
22.4 事件自定義數據
22.5 原生對象構造器
22.6 對象訪問器
22.7 操作類數組
下章劇透
憶之獲
我問你答
第23章 媒婆——中介者模式
23.1 導航設定層
23.2 創建中介者對象
23.3 試試看,可否一用
23.4 攻克需求
23.5 訂閱訊息
23.6 發布訊息
下章劇透
憶之獲
我問你答
第24章 做好筆錄——備忘錄模式
24.1 新聞展示
24.2 快取數據
24.3 新聞快取器
24.4 工作中的備忘錄
下章劇透
憶之獲
我問你答
第25章 點鈔機——疊代器模式
25.1 簡化循環遍歷
25.2 疊代器
25.3 實現疊代器
25.4 小試牛刀
25.5 數組疊代器
25.6 對象疊代器
25.7 試用疊代器
25.8 同步變數疊代器
25.9 分支循環嵌套問題
25.10 解決方案
下章劇透
憶之獲
我問你答
第26章 語言翻譯——解釋器模式
26.1 統計元素路徑
26.2 描述文法
26.3 解釋器
26.4 同級兄弟元素遍歷
26.5 遍歷文檔樹
26.6 小試牛刀
下章劇透
憶之獲
我問你答
第五篇 技巧型設計模式
第27章 永無盡頭——鏈模式
27.1 深究jQuery
27.2 原型式繼承
27.3 找位助手
27.4 獲取元素
27.5 一個大問題
27.6 覆蓋獲取
27.7 方法丟失
27.8 對比jQuery
27.9 豐富元素獲取
27.10 數組與對象
27.11 方法拓展
27.12 添加方法
27.13 大功告成
下章劇透
憶之獲
我問你答
第28章 未來預言家——委託模式
28.1 點擊日曆互動
28.2 委託父元素
28.3 預言未來
28.4 記憶體外泄
28.5 數據分發
下章劇透
憶之獲
我問你答
第29章 數據管理器——數據訪問對象模式
29.1 用戶引導
29.2 數據訪問對象類
29.3 數據操作狀態
29.4 添加數據
29.5 查找數據
29.6 刪除數據
29.7 檢驗DAO
29.8 MongoDB
29.9 在nodejs中寫入配置項
29.10 連結MongoDB
29.11 操作集合
29.12 插入操作
29.13 刪除操作
29.14 更新操作
29.15 查找操作
29.16 操作其它集合
下章劇透
憶之獲
我問你答
第30章 執行控制——節流模式
30.1 返回頂部
30.2 節流器
30.3 最佳化浮層
30.4 創建浮層類
30.5 添加節流器
30.6 圖片的延遲載入
30.7 延遲圖片載入類
30.8 獲取容器內的圖片
30.9 載入圖片
30.10 篩選需載入的圖片
30.11 獲取縱坐標
30.12 節流器最佳化載入
30.13 大功告成
30.14 統計打包
30.15 組裝統計
下章劇透
憶之獲
我問你答
第31章 卡片拼圖——簡單版塊模式
31.1 展示模板
31.2 實現方案
31.3 創建文字列表視圖
31.4 新方案
31.5 再次最佳化
31.6 模板生成器
31.7 最佳方案
下章劇透
憶之獲
我問你答
第32章 機器學習——惰性模式
32.1 對事件的思考
32.2 機器學習
32.3 載入即執行
32.4 惰性執行
32.5 創建XHR對象
32.6 第一種方案
32.7 第二種方案
下章劇透
憶之獲
我問你答
第33章 異國戰場——參與者模式
33.1 傳遞數據
33.2 函式綁定
33.3 套用於事件
33.4 原生bind方法
33.5 函式柯里化
33.6 重構bind
33.7 兼容版本
下章劇透
憶之獲
我問你答
第34章 入場儀式——等待著模式
34.1 接口拆分
34.2 入場儀式
34.3 等待者對象
34.4 監控對象
34.5 完善接口方法
34.6 學以致用
34.7 異步方法
34.8 結果如何
34.9 框架中的等待者
34.10 封裝異步請求
34.11 輪詢
下章劇透
憶之獲
我問你答
第六篇 架構型設計模式
第35章 死心眼——同步模組模式
35.1 排隊開發
35.2 模組化開發
35.3 模組管理器與創建方法
35.4 創建模組
35.5 模組調用方法
35.6 調用模組
下章劇透
憶之獲
我問你答
第36章 大心臟——異步模組模式
36.1 異步載入檔案中的模組
36.2 異步模組
36.3 閉包環境
36.4 創建於調度模組
36.5 載入模組
36.6 設定模組
36.7 學以致用
36.8 實現互動
下章劇透
憶之獲
我問你答
第37章 分而治之——Widget模式
37.1 視圖模組化
37.2 模板引擎
37.3 實現原理
37.4 模板引擎模組
37.5 處理數據
37.6 獲取模板
37.7 處理模板
37.8 編譯執行
37.9 幾種模板
37.10 實現組件
下章劇透
憶之獲
我問你答
第38章 三人行——MVC模式
38.1 小白的顧慮
38.2 一個傳說——MVC
38.3 數據層
38.4 視圖層
38.5 控制器
38.6 側邊導航欄
38.7 側邊導航欄數據模型層
38.8 側邊導航欄視圖層
38.9 側邊導航欄控制器層
38.10 執行控制器
38.11 添加一個模組
下章劇透
憶之獲
我問你答
第39章 三軍統帥——MVP模式
39.1 數據模型層與視圖層聯姻的代價
39.2 MVP模式
39.3 數據層的填補
39.4 視圖層的大刀闊斧
39.5 模板創建的分層處理
39.6 處理一個元素
39.7 改頭換面的管理器
39.8 一個案例
39.9 用數據裝扮導航
39.10 千呼萬喚始出來的導航
39.11 模組開發中的套用
39.12 MVP構造函式
39.13 添加管理器
39.14 增加一個模組
下章劇透
憶之獲
我問你答
第40章 視圖的逆襲——MVVM模式
40.1 視圖層的思考
40.2 滾動條與進度條
40.3 組件的探討
40.4 視圖模型層
40.5 創建進度條
40.6 創建滑動條
40.7 讓滑動條動起來
40.8 為組件點睛
40.9 尋找我的組件
40.10 展現組件
下章劇透
憶之獲
我問你答
附錄A