JavaScript面向對象編程指南 第3版

JavaScript面向對象編程指南 第3版

作者: Ved Antani
出版社: 人民郵電
出版在: 2021-12-01
ISBN-13: 9787115544377
ISBN-10: 7115544379
裝訂格式: 平裝
總頁數: 458 頁





內容描述


JavaScript語言是一種具有高度表達能力的、基於原型特性的、非常靈活的面向對象(Object-Oriented,OO)編程語言。本書著重於介紹JavaScript在面向對象方面的特性,以為你展示如何構建強健、可維護、功能強大的應用程序及程序庫。
本書是《JavaScript面向對象編程指南》的第3版,全書包括13章和4個附錄。依次介紹了JavaScript的發展歷史、基礎知識(變量、數據類型、數組、循環以及條件表達式等)、函數、對象、迭代器和生成器、原型、繼承的實現、類與模塊、Promise與Proxy、瀏覽器環境、編程模式與設計模式、測試與調試和響應式編程等。附錄部分包括學習JavaScript編程常用的參考資源。
本書覆蓋了JavaScript語言的OO特性,同時兼顧基礎知識,對初學者來說,是難得的JavaScript佳作,讀者不需要具備任何JavaScript基礎知識及項目經驗。本書適用於任何希望學習JavaScript的編程初學者,也可以作為有JavaScript使用經驗的讀者的參考書。


目錄大綱


第 1章 JavaScript面向對象 1
1.1 回顧歷史 2
1.1.1 瀏覽器之爭 3
1.1.2 了解現狀 4
1.1.3 展望未來 5
1.2 ECMAScript 5 5
1.3 ECMAScript 6 6
1.3.1 ES6的瀏覽器支持情況 7
1.3.2 Babel 7
1.4 面向對象編程 9
1.4.1 對象 9
1.4.2 類 10
1.4.3 封裝 10
1.4.4 聚合 11
1.4.5 繼承 12
1.4.6 多態 12
1.5 OOP小結 12
1.6 配置練習環境 13
1.6.1 WebKit開發者工具 14
1.6.2 Mac上的JavaScriptCore 15
1.6.3 其他控制台 16
1.7 小結 17
第 2章 基本數據類型、數組、循環及條件表達式 18
2.1 變量 18
2.2 操作符 22
2.3 基本數據類型 25
2.3.1 查看類型操作符—typeof 25
2.3.2 數字 26
2.3.3 字符串 32
2.3.4 布爾值 38
2.3.5 undefined與null 44
2.3.6 Symbol 46
2.4 基本數據類型綜述 46
2.5 數組 47
2.5.1 增加、更新數組元素 48
2.5.2 刪除元素 49
2.5.3 數組的數組 49
2.6 條件與循環 51
2.6.1 代碼塊 51
2.6.2 循環 58
2.7 註釋 63
2.8 練習題 64
2.9 小結 64
第3章 函數 66
3.1 什麼是函數 67
3.1.1 調用函數 67
3.1.2 參數 68
3.2 默認參數 70
3.3 剩餘參數 71
3.4 展開操作符 71
3.5 變量的作用域 78
3.6 塊作用域 81
3.7 函數也是數據 83
3.7.1 匿名函數 84
3.7.2 回調函數 85
3.7.3 即時函數 88
3.7.4 內部(私有)函數 90
3.7.5 返回函數的函數 91
3.7.6 能重寫自己的函數 91
3.8 閉包 93
3.8.1 作用域鏈 93
3.8.2 利用閉包突破作用域鏈 94
3.8.3 循環中的閉包 98
3.8.4 getter與setter 100
3.8.5 迭代器 102
3.9 IIFE與作用域 103
3.10 箭頭函數 103
3.11 練習題 104
3.12 小結 105
第4章 對象 107
4.1 從數組到對象 107
4.1.1 元素、屬性、方法與成員 109
4.1.2 哈希表和關聯型數組 110
4.1.3 訪問對象屬性 110
4.1.4 調用對象方法 112
4.1.5 修改屬性與方法 113
4.1.6 使用this值 114
4.1.7 構造器函數 115
4.1.8 全局對象 116
4.1.9 構造器屬性 118
4.1.10 instanceof操作符 119
4.1.11 返回對象的函數 119
4.1.12 傳遞對象 121
4.1.13 比較對象 121
4.1.14 Webkit控制台中的對象 122
4.1.15 ES6對象語法 124
4.2 對象屬性與類型 125
4.3 ES6對象方法 126
4.3.1 使用Object. assign複製對象屬性 126
4.3.2 使用Object. is方法進行比較 127
4.4 解構賦值 128
4.5 內建對象 130
4.5.1 Object 131
4.5.2 Array() 132
4.6 ES6中的數組方法 137
4.6.1 Array. from 137
4.6.2 使用Array. of創建數組 138
4.6.3 Array. prototype方法 139
4.6.4 函數 140
4.7 箭頭函數中的this 146
4.7.1 推斷對像類型 147
4.7.2 Boolean 148
4.7.3 Number 150
4.7.4 String 151
4.7.5 Math 157
4.7.6 Date 159
4.7.7 RegExp 164
4.8 練習題 174
4.9 小結 176
第5章 ES6中的迭代器和生成器 178
5.1 for. . . of循環結構 178
5.2 迭代器與可迭代對象 179
5.2.1 迭代器 179
5.2.2 可迭代對象 180
5.3 生成器 181
5.4 集合 185
5.4.1 Map 185
5.4.2 Set 189
5.4.3 WeakMap和WeakSet 189
5.5 小結 190
第6章 原型 191
6.1 原型屬性 192
6.2 使用原型的方法與屬性 193
6.2.1 自身屬性與原型屬性 195
6.2.2 利用自身屬性覆寫原型屬性 196
6.2.3 isPrototypeOf()方法 200
6.2.4 秘密的proto鏈接 201
6.3 擴展內建對象 203
6.3.1 關於擴展內建對象的討論 204
6.3.2 原型陷阱 205
6.4 練習題 207
6.5 小結 208
第7章 繼承 210
7.1 原型鏈 210
7.1.1 原型鏈示例 211
7.1.2 將共享屬性遷移到原型中去 214
7.2 只繼承於原型 217
7.3 uber—子對象訪問父對象的方式 220
7.4 將繼承部分封裝成函數 222
7.5 屬性複制 224
7.6 小心處理引用複制 226
7.7 對象之間的繼承 229
7.8 深複製 231
7.9 object() 233
7.10 原型繼承與屬性複制的混合應用 234
7.11 多重繼承 236
7.12 寄生式繼承 238
7.13 構造器借用 239
7.14 案例學習:圖形繪製 242
7.14.1 分析 243
7.14.2 實現 243
7.14.3 測試 248
7.15 練習題 249
7.16 小結 250
第8章 類與模塊 255
8.1 定義類 257
8.1.1 構造器 259
8.1.2 原型方法 259
8.1.3 靜態方法 260
8.1.4 靜態屬性 261
8.1.5 生成器方法 261
8.2 子類化 261
8.3 模塊 264
8.4 小結 268
第9章 Promise與Proxy 269
9.1 異步編程模型 270
9.2 JavaScript調用棧 272
9.2.1 消息隊列 273
9.2.2 事件循環 273
9.2.3 計時器 273
9.3 Promise 276
9.3.1 創建Promise 278
9.3.2 元編程與Proxy 280
9.3.3 Proxy 281
9.3.4 函數攔截 282
9.4 小結 283
第 10章 瀏覽器環境 285
10.1 在HTML頁面中引入JavaScript代碼 285
10.2 BOM與DOM概覽 286
10.3 BOM 287
10.3.1 window對象再探 287
10.3.2 window. navigator屬性 288
10.3.3 控制台的備忘功能 289
10.3.4 window. location屬性 289
10.3.5 window. history屬性 290
10.3.6 window. frames屬性 292
10.3.7 window. screen屬性 293
10.3.8 window. open()/close()方法 294
10.3.9 window. moveTo()方法和window. resizeTo()方法 295
10.3.10 window. alert()、window. prompt()和window. confirm()方法 295
10.3.11 window. setTimeout()和window. setInterval()方法 297
10.3.12 window. document屬性 299
10.4 DOM 299
10.4.1 Core DOM與HTML DOM 301
10.4.2 DOM節點的訪問 303
10.4.3 DOM節點的修改 312
10.4.4 新建節點 315
10.4.5 移除節點 319
10.4.6 只適用於HTML的DOM對象 321
10.5 事件 324
10.5.1 內聯HTML屬性法 324
10.5.2 元素屬性法 325
10.5.3 DOM的事件監聽器 325
10.5.4 捕獲法與冒泡法 327
10.5.5 阻斷傳播 328
10.5.6 防止默認行為 330
10.5.7 跨瀏覽器的事件監聽器 330
10.5.8 事件類型 332
10.6 XMLHttpRequest對象 333
10.6.1 發送請求 334
10.6.2 處理響應 335
10.6.3 在早於IE 7的版本中創建XMLHttpRequest對象 336
10.6.4 A代表異步 337
10.6.5 X代表XML 338
10.6.6 示例 338
10.7 練習題 340
10.8 小結 342
第 11章 編程模式與設計模式 345
11.1 編程模式 346
11.1.1 行為隔離 346
11.1.2 命名空間 349
11.1.3 初始化時分支 352
11.1.4 惰性初始 353
11.1.5 配置對象 354
11.1.6 私有屬性和方法 356
11.1.7 特權方法 357
11.1.8 私有函數的公有化 357
11.1.9 即時函數 358
11.1.10 模塊 359
11.1.11 鍊式調用 360
11.1.12 JSON 361
11.1.13 高階函數 363
11.2 設計模式 364
11.2.1 單例模式1 365
11.2.2 單例模式2 365
11.2.3 工廠模式 367
11.2.4 裝飾器模式 369
11.2.5 裝飾一棵聖誕樹 370
11.3 觀察者模式 371
11.4 小結 374
第 12章 測試與調試 375
12.1 單元測試 376
12.1.1 測試驅動開發 376
12.1.2 行為驅動測試 377
12.1.3 mocha、chai以及sinon 382
12.2 調試JavaScript 382
12.2.1 語法錯誤 382
12.2.2 運行時異常 383
12.3 小結 388
第 13章 響應式編程與React 390
13.1 響應式編程 390
13.2 React 393
13.3 虛擬DOM 393
13.4 React的安裝及運行 394
13.4.1 組件與props 398
13.4.2 state 399
13.4.3 生命週期函數 401
13.5 小結 402
附錄A 保留字 403
附錄B 內建函數 407
附錄C 內建對象 410
附錄D 正則表達式 453


作者介紹


Veb Antani 擁有多年的使用JavaScript、Go以及Java開發大型服務器端及移動的平台的經驗。

Stoyan Stefanov是Facebook公司工程師、作家、演說家。他經常會在博客和相關會議中就Web開發話題發表獨到見解。




相關書籍

Creative Projects for Rust Programmers: Build exciting projects on domains such as web apps, WebAssembly, games, and parsing

作者 Milanesi Carlo

2021-12-01

從 Hooks 開始,讓你的網頁 React 起來(iT邦幫忙鐵人賽系列書)

作者 陳柏融

2021-12-01

Web前端技術叢書:15天學會jQuery編程與實戰(視頻教學版)(配光盤)

作者 劉鑫

2021-12-01