《JavaScript設計模式》共分六篇四十章,首先討論了幾種函數的編寫方式,體會JavaScript在編程中的靈活性;然后講解了面向對象編程的知識,其中討論了類的創建、數據的封裝以及類之間的繼承;探討了各種模式的技術,如簡單工廠模式,包括工廠方法模式、抽象工廠模式、建造者模式、原型模式、單例模式,以及外觀模式,包括適配器模式。本書還講解了幾種適配器、模式、裝飾者模式和MVC模式,討論了如何實現對數據、視圖、控制器的分離。在講解MVP模式時,討論了如何解決數據與視圖之間的耦合,并實現了一個模板生成器;講解MVVM模式時,討論了雙向綁定對MVC的模式演化。本書幾乎包含了關于JavaScript設計模式的全部知識,是進行JavaScript高效編程必備的學習手冊。
《JavaScript設計模式》適合JavaScript初學者、前端設計者、JavaScript程序員學習,也可以作為大專院校相關專業師生的學習用書,以及培訓學校的教材。
專業講解Web前端設計模式書
、百度前端高級工程師鼎力推薦
Web前端界以一種講故事方式講解每一種模式,讓每位讀者都能讀懂。
書中案例都是實際工作中的真實案例,讓讀者身臨其境。
涵蓋專門針對JavaScript的36個設計模式,幫助讀者盡快提高開發效率
深入剖析面向對象的設計原則及代碼重構,幫助讀者快速融入團隊項目開發中
本書通過職場主人公"小銘"實戰歷練,介紹了他從菜鳥到高級程序員的蛻變過程,值得每一個程序員借鑒和學習!
各種設計模式的原則和定義、應用方法實踐
張容銘百度博學高級web前端研發工程師,長期工作在web前端一線上,現研發與維護百度圖片搜索業務,曾主導百度新首頁項目改版等。 喜歡鋼琴,素描,而又常帶著他的單反各地旅行。
目錄
及時篇 面向對象編程
第1章 靈活的語言——JavaScript 2
1.1 入職及時天 2
1.2 函數的另一種形式 2
1.3 用對象收編變量 3
1.4 對象的另一種形式 4
1.5 真假對象 4
1.6 類也可以 5
1.7 一個檢測類 5
1.8 方法還可以這樣用 6
1.9 函數的祖先 7
1.10 可以鏈式添加嗎 8
1.11 換一種方式使用方法 9
下章劇透 10
憶之獲 10
我問你答 10
第2章 寫的都是看到的——面向
對象編程 11
2.1 兩種編程風格——面向過程與
面向對象 11
2.2 包裝明星——封裝 12
2.3 傳宗接代——繼承 19
2.4 老師不止一位——多繼承 27
2.5 多種調用方式——多態 29
下章劇透 30
憶之獲 31
我問你答 31
第二篇 創建型設計模式
第3章 神奇的魔術師——簡單工廠模式 34
3.1 工作中的及時次需求 34
3.2 如果類太多,那么提供一個 35
3.3 一個對象有時也可代替許多類 37
3.4 你的理解決定你選擇的方式 38
下章劇透 39
憶之獲 39
我問你答 39
第4章 給我一張名片——工廠方法模式 40
4.1 廣告展現 40
4.2 方案的抉擇 41
4.3 安全模式類 42
4.4 安全的工廠方法 43
下章劇透 44
憶之獲 44
我問你答 44
第5章 出現的都是幻覺——抽象
工廠模式 45
5.1 帶頭模范——抽象類 45
5.2 幽靈工廠——抽象工廠模式 46
5.3 抽象與實現 47
下章劇透 49
憶之獲 49
我問你答 49
第6章 分即是合——建造者模式 50
6.1 簡歷 50
6.2 創建對象的另一種形式 50
6.3 創建一位應聘者 52
下章劇透 53
憶之獲 53
我問你答 54
第7章 語言之魂——原型模式 55
7.1 語言中的原型 55
7.2 創建一個焦點圖 55
7.3 的解決方案 56
7.4 原型的拓展 58
7.5 原型繼承 58
下章劇透 59
憶之獲 60
我問你答 60
第8章 一個人的寂寞——單例模式 61
8.1 滑動特效 61
8.2 命名空間的管理員 62
8.3 模塊分明 63
8.4 創建一個小型代碼庫 63
8.5 無法修改的靜態變量 64
8.6 惰性單例 65
下章劇透 65
憶之獲 66
我問你答 66
第三篇 結構型設計模式
第9章 套餐服務——外觀模式 68
9.1 添加一個點擊事件 68
9.2 兼容方式 69
9.3 除此之外 70
9.4 小型代碼庫 70
下章劇透 71
憶之獲 71
我問你答 72
第10章 水管彎彎——適配器模式 73
10.1 引入jQuery 73
10.2 生活中的適配器 73
10.3 jQuery適配器 74
10.4 適配異類框架 74
10.5 參數適配器 75
10.6 數據適配 76
10.7 服務器端數據適配 77
下章劇透 77
憶之獲 77
我問你答 78
第11章 牛郎織女——模式 79
11.1 無法獲取圖片上傳模塊數據 79
11.2 一切只因跨域 79
11.3 站長統計 80
11.4 JSONP 81
11.5 模板 81
下章劇透 83
憶之獲 83
我問你答 84
第12章 房子裝修——裝飾者模式 85
12.1 為輸入框的新需求 85
12.2 裝飾已有的功能對象 86
12.3 為輸入框添磚加瓦 86
下章劇透 87
憶之獲 87
我問你答 88
第13章 城市間的公路——橋接模式 89
13.1 添加事件交互 89
13.2 提取共同點 90
13.3 事件與業務邏輯之間的橋梁 90
13.4 多元化對象 91
下章劇透 93
憶之獲 93
我問你答 93
第14章 超值午餐——組合模式 94
14.1 新聞模塊十萬火急 94
14.2 餐廳里的套餐業務 95
14.3 每個成員要有祖先 95
14.4 組合要有容器類 96
14.5 創建一個新聞類 97
14.6 把新聞模塊創建出來 99
14.7 表單中的應用 100
下章劇透 101
憶之獲 101
我問你答 102
第15章 城市公交車——享元模式 103
15.1 翻頁需求 103
15.2 冗余的結構 104
15.3 享元對象 104
15.4 實現需求 105
15.5 享元動作 106
下章劇透 108
憶之獲 108
我問你答 108
第四篇 行為型設計模式
第16章 照貓畫虎——模板方法模式 110
16.1 提示框歸一化 110
16.2 美味的蛋糕 111
16.3 創建基本提示框 111
16.4 模板的原型方法 112
16.5 根據模板創建類 113
16.6 繼承類也可作為模板類 113
16.7 創建一個提示框 114
16.8 創建多類導航 114
16.9 創建導航更容易 116
下章劇透 116
憶之獲 116
我問你答 117
第17章 通信衛星——觀察者模式 118
17.1 團隊開發的坎坷 118
17.2 衛星的故事 118
17.3 創建一個觀察者 119
17.4 拉出來溜溜 121
17.5 使用前的思考 121
17.6 大顯身手 121
17.7 對象間解耦 123
17.8 課堂演練 124
下章劇透 125
憶之獲 125
我問你答 125
第18章 超級瑪麗——狀態模式 126
18.1 最美圖片 126
18.2 分支判斷的思考 126
18.3 狀態對象的實現 127
18.4 狀態對象演練 127
18.5 超級瑪麗 128
18.6 狀態的優化 129
18.7 兩種使用方式 130
下章劇透 131
憶之獲 131
我問你答 131
第19章 活諸葛——策略模式 132
19.1 商品促銷 132
19.2 活諸葛 132
19.3 策略對象 133
19.4 諸葛奇謀 133
19.5 緩沖函數 134
19.6 表單驗證 134
19.7 算法拓展 135
19.8 算法調用 135
下章劇透 136
憶之獲 136
我問你答 137
第20章 有序車站——職責鏈模式 138
20.1"半成品"需求 138
20.2 分解需求 139
20.3 及時站——請求模塊 139
20.4 下一站——響應數據適配模塊 140
20.5 終點站——創建組件模塊 141
20.6 站點檢測——單元測試 141
20.7 方案確定 142
下章劇透 142
憶之獲 143
我問你答 143
第21章 命令模式 144
21.1 自由化創建視圖 144
21.2 命令對象 145
21.3 視圖創建 145
21.4 視圖展示 146
21.5 命令接口 147
21.6 大功告成 147
21.7 繪圖命令 148
21.8 寫一條命令 150
下章劇透 150
憶之獲 151
我問你答 151
第22章 駐華大使——訪問者模式 152
22.1 設置樣式 152
22.2 自娛自樂的IE 152
22.3 訪問操作元素 153
22.4 事件自定義數據 153
22.5 原生對象構造器 154
22.6 對象訪問器 154
22.7 操作類數組 155
下章劇透 156
憶之獲 156
我問你答 156
第23章 媒婆——中介者模式 157
23.1 導航設置層 157
23.2 創建中介者對象 158
23.3 試試看,可否一用 159
23.4 攻克需求 159
23.5 訂閱消息 160
23.6 消息 161
下章劇透 162
憶之獲 162
我問你答 162
第24章 做好筆錄——備忘錄模式 163
24.1 新聞展示 163
24.2 緩存數據 164
24.3 新聞緩存器 164
24.4 工作中的備忘錄 166
下章劇透 166
憶之獲 166
我問你答 166
第25章 點鈔機——迭代器模式 167
25.1 簡化循環遍歷 167
25.2 迭代器 167
25.3 實現迭代器 168
25.4 小試牛刀 170
25.5 數組迭代器 171
25.6 對象迭代器 171
25.7 試用迭代器 172
25.8 同步變量迭代器 172
25.9 分支循環嵌套問題 174
25.10 解決方案 176
下章劇透 177
憶之獲 177
我問你答 177
第26章 語言翻譯——解釋器模式 178
26.1 統計元素路徑 178
26.2 描述文法 179
26.3 解釋器 179
26.4 同級兄弟元素遍歷 180
26.5 遍歷文檔樹 180
26.6 小試牛刀 181
下章劇透 182
憶之獲 182
我問你答 182
第五篇 技巧型設計模式
第27章 永無盡頭——鏈模式 184
27.1 深究jQuery 184
27.2 原型式繼承 184
27.3 找位助手 185
27.4 獲取元素 185
27.5 一個大問題 186
27.6 覆蓋獲取 187
27.7 方法丟失 187
27.8 對比jQuery 188
27.9 豐富元素獲取 189
27.10 數組與對象 190
27.11 方法拓展 191
27.12 添加方法 192
27.13 大功告成 195
下章劇透 196
憶之獲 196
我問你答 196
第28章 未來預言家——委托模式 197
28.1 點擊日歷交互 197
28.2 委托父元素 197
28.3 預言未來 198
28.4 內存外泄 199
28.5 數據分發 200
下章劇透 201
憶之獲 201
我問你答 201
第29章 數據管理器——數據訪問
對象模式 202
29.1 用戶引導 202
29.2 數據訪問對象類 203
29.3 數據操作狀態 203
29.4 增添數據 204
29.5 查找數據 205
29.6 刪除數據 206
29.7 檢驗DAO 207
29.8 MongoDB 208
29.9 在nodejs中寫入配置項 208
29.10 連接MongoDB 208
29.11 操作集合 209
29.12 插入操作 209
29.13 刪除操作 210
29.14 更新操作 211
29.15 查找操作 211
29.16 操作其他集合 212
下章劇透 212
憶之獲 212
我問你答 213
第30章 執行控制——節流模式 214
30.1 返回頂部 214
30.2 節流器 214
30.3 優化浮層 216
30.4 創建浮層類 216
30.5 添加節流器 217
30.6 圖片的延遲加載 218
30.7 延遲加載圖片類 218
30.8 獲取容器內的圖片 219
30.9 加載圖片 220
30.10 篩選需加載的圖片 220
30.11 獲取縱坐標 221
30.12 節流器優化加載 221
30.13 大功告成 222
30.14 統計打包 222
30.15 組裝統計 222
下章劇透 224
憶之獲 224
我問你答 224
第31章 卡片拼圖——簡單模板模式 225
31.1 展示模板 225
31.2 實現方案 225
31.3 創建文字列表視圖 226
31.4 新方案 227
31.5 再次優化 228
31.6 模板生成器 228
31.7 方案 229
下章劇透 229
憶之獲 230
我問你答 230
第32章 機器學習——惰性模式 231
32.1 對事件的思考 231
32.2 機器學習 232
32.3 加載即執行 232
32.4 惰性執行 233
32.5 創建XHR對象 233
32.6 及時種方案 234
32.7 第二種方案 235
下章劇透 235
憶之獲 235
我問你答 235
第33章 異國戰場——參與者模式 236
33.1 傳遞數據 236
33.2 函數綁定 237
33.3 應用于事件 238
33.4 原生bind方法 239
33.5 函數柯里化 239
33.6 重構bind 240
33.7 兼容版本 241
下章劇透 242
憶之獲 242
我問你答 243
第34章 入場儀式——等待者模式 244
34.1 接口拆分 244
34.2 入場儀式 244
34.3 等待者對象 245
34.4 監控對象 246
34.5 完善接口方法 247
34.6 學以致用 248
34.7 異步方法 248
34.8 結果如何 249
34.9 框架中的等待者 250
34.10 封裝異步請求 250
34.11 輪詢 251
下章劇透 251
憶之獲 251
我問你答 252
第六篇 架構型設計模式
第35章 死心眼——同步模塊模式 254
35.1 排隊開發 254
35.2 模塊化開發 255
35.3 模塊管理器與創建方法 255
35.4 創建模塊 256
35.5 模塊調用方法 258
35.6 調用模塊 259
下章劇透 259
憶之獲 260
我問你答 260
第36章 大心臟——異步模塊模式 261
36.1 異步加載文件中的模塊 261
36.2 異步模塊 262
36.3 閉包環境 262
36.4 創建與調度模塊 263
36.5 加載模塊 264
36.6 設置模塊 265
36.7 學以致用 266
36.8 實現交互 267
下章劇透 267
憶之獲 267
我問你答 267
第37章 分而治之——Widget模式 268
37.1 視圖模塊化 268
認識張容銘是在2012年年底的時候,那時張容銘來公司實習,大家都覺得這小伙子實力不俗。而且很愛鉆研。在得知容銘利用業余時間完成了本書的創作,作為他的朋友,真替他感到高興!短短幾年,進步如此迅速,在前端實戰開發方面有著這么多的積累,有時也會讓我自愧不如。
在Web應用日益豐富的今天,越來越多的JavaScript被運用在我們的網頁中。隨著用戶體驗日益受到重視,前端的可維護性、前端性能對用戶體驗的影響開始備受關注,因此如何編寫高效的可維護的代碼,成為眾多互聯網公司爭相研究的對象。
本書通過對話的方式詳細地介紹了各種設計模式的原則和定義、應用方法和實踐,多方位比較各種同類模式之間的異同,詳細講解不同模式的使用方法。
"具有趣味,容易理解,但講解又極為嚴謹和透徹"是本書的寫作風格和特點。希望大家在學到知識的同時,能夠感受到作者的風趣幽默。
,希望本書能夠幫助業界同仁打造出更為的Web產品。
集團() 高級Web前端研發工程師 王鵬飛
在百度工作的時間里,和張容銘共事過一段時光,在相處的過程中就發現張容銘對設計模式的研究和應用有很大的熱情,投入精力很多,且在應用上有很好的理解和收獲。本書可以說是張容銘多年來積累的技術經驗的總結,涵蓋了絕大多數設計模式;敘述方面采用新人與導師對話的方式,風趣幽默、通俗易懂,非常適合JavaScript初學者和前段開發工程師學習。
百度 高級前端研發工程師 楊坤
書很好!!
不錯 到貨快 書還可以
不錯的技術書
還行吧,包裝一般,紙質也是一般,感覺當當的書不再有之前那種摸起來很舒適的感覺了
說字數不夠
書很好。很喜歡
非常好,快遞速度書的質量也很棒
很不錯的書,斷斷續續看了部分,性價比高!
蹭積分專用評論
第一頁皺成這熊樣
這本書講的不錯,看了一下,對幫助也挺大的
沒怎么看,應該不錯
周年慶屯一波,實惠超值
印刷不錯,內容實在不想說什么。Head first 系列失敗的仿品。不推薦讀。
書還沒怎么看,包裝還可以。看了第一章感覺挺爽的。。。
書本描述方式很有趣,值得邊看邊寫,已看過兩遍!
內容非常好,語言直白易懂,紙質和排版都不錯,非常贊的一本書,推薦購買
看了8章,內容的講述深入淺出,挺好的一本書,建議使用javascript的人讀一讀。
晚上九點鐘下單,早晨九點鐘收貨,我還能說什么呢,正品質量好
其實單純的前端沒必要看這本書,但是如果做node一定要好好看
質量沒得說,支持正版。包裝有待加強,最好外面給包一層泡饃。這樣肯定不會有折痕了
滿分推薦,通過一個小白學習提升的故事引出知識點,而且通過各種比喻擬人讓知識變得通俗移易懂,不可多得的好書
618和其他一直想買的一塊,很便宜,內容實用,需要有經驗看。
非常不錯的書籍,設計模式掌握得好,對于寫出高質量的程序還是非常有幫助的
特別的好必須得安下心來鉆研才能有收獲不可能看一下就就說沒用這很不負責你有過仔細看過嗎
JAVASCRIPT設計模式的教材。目錄目錄第一篇面向對象編程第章靈活的語言——入職第一天函數的另一種形式用對象收編O變量對象的另據檢驗
主要分享了一些實用技巧,和一些開發模式,感覺不錯