●章 ECMAScript簡介1
1.1 概述1
1.1.1 ECMAScript各版本1
1.1.2 關於JavaScript2
1.1.3 其他腳本語言2
1.2 語法的實現2
1.2.1 源代碼2
1.2.2 語句3
1.2.3 表達式5
1.2.4 子程序10
1.2.5 注釋11
1.2.6 關鍵字11
1.3 開 發 環 境12
1.3.1 瀏覽器13
1.3.2 Node.js14
1.3.3 其他JavaScript Shell14
1.4 練習題15
第2章 表達式與運算符17
2.1 操作數17
2.1.1 常量(ES6)17
2.1.2 變量(ES6)18
2.1.3 子表達式23
2.1.4 函數的返回值25
2.2 運算符26
2.2.1 算術運算符(ES7)27
2.2.2 賦值運算符30
2.2.3 比較運算符33
2.2.4 邏輯運算符34
2.2.5 條件運算符36
2.2.6 類型運算符37
2.2.7 按位運算符41
2.2.8 括號運算符46
2.2.9 擴展運算符(ES6)49
2.2.10 逗號運算符51
2.2.11 刪除運算符51
2.2.12 運算符的優先級(ES6)53
2.3 練習題55
第3章 數據類型57
3.1 數值類型57
3.1.1 2n進制的字面量(ES6)57
3.1.2 數值的比較(ES6)58
3.1.3 數值的正負符號(ES6)59
3.1.4 數值的截斷(ES6)60
3.1.5 數值的特殊格式(ECMA-402)63
3.1.6 整數值的安全範圍(ES6)66
3.2 布爾類型68
3.3 數組類型70
3.4 對像類型73
3.5 字符串類型75
3.5.1 一般字符串75
3.5.2 格式化字符串(ES6)77
3.5.3 日期與時間格式的字符串(ES6)80
3.6 集合與地圖類型82
3.6.1 集合類型(ES6)82
3.6.2 地圖類型(ES6)84
3.7 數據類型的轉換(ES6)85
3.8 練習題88
第4章 條件和循環語句90
4.1 條件語句90
4.1.1 if語句90
4.1.2 switch語句94
4.2 循環語句96
4.2.1 for相關語句(ES6)96
4.2.2 while相關語句104
4.2.3 break與continue語句106
4.3 練習題108
第5章 函數與方法110
5.1 函數的定義110
5.1.1 不同形式的函數(ES6)110
5.1.2 函數名稱(ES6)124
5.1.3 參數(ES6)125
5.1.4 主體132
5.1.5 返回數據與void關鍵字(ES6)135
5.1.6 定義的位置(ES6)137
5.1.7 函數的調用形式(ES6)139
5.2 生成器142
5.2.1 迭代器協議與生成器(ES6)142
5.2.2 生成器函數的定義和用法(ES6)143
5.3 搭配Promise對像144
5.3.1 Promise對像的用法(ES6、ES9)144
5.3.2 聚集多個Promise對像(ES6)148
5.3.3 異步函數與等待表達式(ES8)154
5.4 練習題156
第6章 處理數值159
6.1 Number對像的內置屬性159
6.1.1 優選的正數和安全整數(ES6)159
6.1.2 最小的正數和安全整數(ES6)160
6.1.3 正負無窮值162
6.1.4 非數值的判斷(ES6)162
6.1.5 浮點數運算的誤差值(ES6)166
6.2 Number對像的內置函數167
6.2.1 轉換為特定進制的數碼字符串167
6.2.2 處理小數格式170
6.2.3 轉換為數值172
6.2.4 判斷是否為整數或有限數(ES6)175
6.3 Math對像177
6.3.1 Math對像的常量屬性177
6.3.2 Math對像的函數(ES6)178
6.4 練習題189
第7章 處理字符串190
7.1 String對像190
7.1.1 子字符串的索引值190
7.1.2 特定模式的子字符串的搜索(ES6)192
7.1.3 子字符串的獲取194
7.1.4 子字符串的替換196
7.1.5 字符串的大小寫轉換198
7.1.6 不同字符串的連接199
7.1.7 字符串的重復連接200
7.1.8 字符串的分割200
7.1.9 特定字符和Unicode數碼的雙向轉換(ES6)202
7.1.10 重復填充子字符串於擴充後的字符串中(ES8)204
7.2 將冗長的字符串分割為多行(ES6)205
7.3 字符串的擴展運算(ES6)207
7.4 字符串的插值格式化(ES6)207
7.5 原始字符串(ES6)210
7.6 正則表達式與黏性匹配(ES6)211
7.7 萬國碼字面量(ES6)214
7.8 練習題216
第8章 處理數組217
8.1 Array對像217
8.1.1 創建特定數組的副本(ES6)217
8.1.2 創建來自可迭代對像的新數組(ES6)220
8.1.3素數據所構成的字符串223
8.1.4素的放入和取出224
8.1.5 新增或刪除數組素226
8.1.6 合並多個數組227
8.1.7 切割數組228
8.1.8 尋找符合特定條件素(ES6)229
8.1.9 自我復制並覆蓋數組素(ES6)230
8.1.10 判斷素是否符合特定條件232
8.1.11 數素的填充(ES6)233
8.1.12 篩選出符合特定條件素(ES6)235
8.1.13 循環訪問素236
8.1.14 判斷是否為數組的實例237
8.1.15 訪問並漸次處理素的數據239
8.1.16 反轉素的順序244
8.1.17 素的重新排序245
8.1.18 判素的存在性(ES7)246
8.2 數組的擴展運算(ES6)248
8.3素的匹配(ES6)249
8.4 數據類型化的按位數組(ES6)250
8.5 練習題252
第9章 處理自定義對像253
9.1 自定義對像的屬性名稱、屬性數據與副本253
9.1.1 對像屬性的名稱或數據所構成的數組(ES8)253
9.1.2 精細創建特定對像實例的副本255
9.2 自定義對像實例之間的相同性與合並258
9.2.1 判斷兩個對像實例的數據是否完全相同(ES6)258
9.2.2 合並多個對像實例的所有成員(ES6)260
9.3 對像實例的簡短自定義語法(ES6)261
9.4 自定義對像實例的動態成員名稱(ES6)262
9.5 對像實例的匹配(ES9)262
9.6 練習題264
0章 處理日期和時間265
10.1 處理日期265
10.1.1 獲取日期相關數據265
10.1.2 設置日期相關數據267
10.1.3 帶有日期的格式化字符串268
10.2 處理時間270
10.2.1 獲取時間相關數據270
10.2.2 設置時間相關數據272
10.2.3 帶有時間的格式化字符串274
10.2.4 時間至今的毫秒數(ES6)275
10.3 練習題277
1章 DOM的事件處理(一)278
11.1 鼠標事件278
11.1.1 單擊和雙擊事件278
11.1.2 上下文菜單事件281
11.1.3 鼠標按下與松開事件282
11.1.4 鼠標指針相關進出事件284
11.1.5 鼠標移動事件287
11.2 鍵盤事件289
11.2.1 按壓與按下按鍵事件289
11.2.2 松開按鍵事件289
11.3 網頁內容的裝卸事件290
11.3.1 出現錯誤事件290
11.3.2 加載和頁面顯示事件292
11.3.3 卸載和頁面隱藏事件294
11.3.4 先於卸載事件295
11.3.5 網址散列變化事件296
11.3.6 滾動事件298
11.4 表單事件299
11.4.1 內容變化事件299
11.4.2 獲取和失去焦點相關事件300
11.4.3 輸入事件302
11.4.4 無效事件303
11.4.5 重置事件304
11.4.6 搜索事件306
11.4.7 選定文本事件307
11.4.8 提交事件308
11.5 練習題309
2章 DOM的事件處理(二)311
12.1 拖動事件311
12.1.1 正在拖動事件311
12.1.2 拖動結束事件313
12.1.3 拖動進入事件315
12.1.4 拖動離開事件316
12.1.5 拖動懸停事件318
12.1.6 拖動開始事件319
12.1.7 放下事件321
12.2 剪貼板事件323
12.2.1 復制事件324
12.2.2 剪切事件325
12.2.3 粘貼事件325
12.3 視頻和音頻事件325
12.3.1 加載相關事件326
12.3.2 清空事件328
12.3.3 播放結束事件329
12.3.4 異常相關事件330
12.3.5 播放與暫停相關事件331
12.3.6 播放速率變化事件332
12.3.7 播放位置變化相關事件333
12.3.8 音量變化事件335
12.3.9 緩衝等待事件335
12.4 動畫及過渡事件336
12.4.1 動畫相關事件336
12.4.2 過渡結束事件338
12.5 其他事件339
12.5.1 deta素實例的切換事件340
12.5.2 鼠標滾輪事件341
12.5.3 觸摸相關事件342
12.5.4 接收服務器數據相關事件344
12.6 練習題346
3章 Reflect對像347
13.1 Reflect對像介紹(ES6)347
13.2 間接應用特定函數(ES6)349
13.3 創建特定對像的實例(ES6)351
13.4 精細定義新屬性(ES6)353
13.5 刪除特定屬性(ES6)354
13.6 獲取特定屬性的數據(ES6)355
13.7 返回特定屬性的描述器(ES8)356
13.8 返回特定對像的原型(ES6)359
13.9 判斷特定屬性的存在性(ES6)360
13.10 判斷與設置特定對像的擴展性(ES6)361
13.11 簡易定義新屬性(ES6)363
13.12 重新設置特定對像的原型(ES6)365
13.13 返回與列舉特定對像的自定義屬性(ES6)367
13.14 練習題370
4章 Proxy對像、Intl對像和navigator對像實例371
14.1 Proxy對像371
14.1.1 創建訪問代理機制的構造函數(ES6)372
14.1.2 確定被代理的特定對像(ES6)373
14.1.3 自定義代理函數(ES6)373
14.1.4 調試訪問代理機制(ES6)375
14.2 Intl對像376
14.2.1 精確比較語言敏感的字符串(ECMA-402)376
14.2.2 語言敏感的日期與時間格式(ECMA-402)378
14.2.3 語言敏感的數值格式(ECMA-402)379
14.2.4 返回規範化語言環境名稱(ECMA-402)380
14.3 window.navigator對像實例381
14.3.1 獲取瀏覽器相關信息381
14.3.2 獲取當前地理定位相關數據383
14.4 練習題385
5章 window.document對像實例386
15.1 返回焦點素386
15.2 附加事件處理器素388
15.3 收養特定節點390
15.4 返回所素構成的集合392
15.5 返回當前網址的相關屬性393
15.6 在當前網頁中動態生成HTML源代碼394
15.7 內含特定服務器相關數據的cookie396
15.8 返回當前網頁編碼字符集的名稱398
15.9 創建代表新屬性的節點398
15.10 創建代表新注釋的節點399
15.11 創建代表新片素的節點400
15.12 創建代表新文本的節點402
15.13 返回當前網素404
15.14 訪問當前網址的域名405
15.15 返回所有em素構成的集合406
15.16 返回所有f素實例構成的集合407
15.17 返回特定身份識素實例408
15.18 返回被設置帶有特定CSS類名素實例的集合411
15.19 返回特定標簽名稱素實例的集合414
15.20 判斷當前網頁是否存在焦點416
15.21 返回當前網頁的h素實例417
15.22 返回當前網頁所有im素實例的集合418
15.23 創建當前網頁或者子網頁裡的特定節點實例的副本420
15.24 獲取當前網頁的最近被修改的日期和時間423
15.25 返回當前網頁中的所有素實例的集合425
15.26 返回特定CSS選擇器名稱素實例或集合426
15.27 返回和處置當前網頁的加載狀態429
15.28 返回跳轉前的網址430
15.29 解除已被附加的事件處理器432
15.30 返回當前網頁中的所有scr素實例構成的集合433
15.31 訪問當前網頁的標題文本434
15.32 練習題435
6章 D素實例437
16.1 設置焦點跳轉素實例上的快捷鍵437
16.2 創素實例的動畫效果(Web Animations)439
16.3 素實例和訪素實例的所有屬性441
16.4 使素實例失去和獲取焦點445
16.5 訪問子節素的實例447
16.6 訪問被應用素實例的所有CSS類名450
16.7 模擬鼠標單素實例的動作454
16.8 獲素的尺寸、坐標與可定位素455
16.9 比素之間的位置關繫458
16.10 判斷是否存在素或可被編輯461
16.11 訪素實例的文本被書寫的方向463
16.12 返回頭尾的子節點實素實例464
16.13 訪問或刪素實例的特定屬性467
16.14 訪素實例的常見屬性的數據469
16.15 判斷是否存在任何子節點實例472
16.16 在特定子節點實例之前新增另一子節點實例473
16.17 判斷兩個節點實例的內容是否完全相同475
16.18 返回下一個或上一個兄弟節點實例478
16.19 返回特定節點實例的相關數據479
16.20 合並多個相鄰的文本子節點實例481
16.21 返回父節點實例484
16.22 刪除或替換子節點實例486
16.23 獲取滾動條的相關數據488
16.24 練習題491
7章 BOM的多個對像實例492
17.1 window對像實例492
17.1.1 顯示多種對話框與搜索特定文本492
17.1.2 滾動至坐標或滾動特定距離496
17.2 screen對像實例498
17.3 history對像實例499
17.4 location對像實例501
17.5 練習題503
8章 類504
18.1 類的定義和繼承504
18.1.1 類的定義(ES6)505
18.1.2 類的繼承(ES6)507
18.2 類的靜態成員508
18.2.1 靜態成員的概念和定義(ES6)509
18.2.2 靜態成員的運用(ES6)511
18.3 類的設置器和取得器511
18.3.1 設置器和取得器的概念和定義(ES6)512
18.3.2 設置器和取得器的運用(ES6)513
18.4 練習題514
9章 錯誤處理516
19.1 異常錯誤的種類516
19.1.1 語法錯誤517
19.1.2 數據類型錯誤518
19.1.3 評估錯誤520
19.1.4 範圍錯誤522
19.1.5 引用錯誤524
19.1.6 網址在編碼或解碼上的錯誤526
19.1.7 邏輯錯誤527
19.2 處置特定異常錯誤529
19.2.1 試驗與捕獲特定異常錯誤529
19.2.2 拋出自定義的異常錯誤530
19.3 調試機制531
19.3.1 嚴格模式531
19.3.2 源代碼的斷點設置和逐句執行535
19.4 練習題536
第20章 數據的驗證與傳輸538
20.1 HTML表單的內置驗證538
20.1.1 必填驗證538
20.1.2 字符個數和數值範圍的驗證540
20.2 自定義的驗證542
20.2.1 文本字段的模式驗證544
20.2.2 JavaScript源代碼實現的驗證545
20.3 異步數據傳輸548
20.3.1 AJAX的工作原理549
20.3.2 AJAX的編程方式552
20.4 練習題561
第21章 響應式機制563
21.1 通過CSS語法的版本563
21.1.1 信息565
21.1.2 媒體查詢565
21.2 通過JavaScript語法的版本567
21.2.1 簡易判斷窗口尺寸的版本572
21.2.2 直接變更CSS規則的版本575
21.3 源代碼的加密579
21.3.1 改寫HTML與CSS成為JavaScript源代碼580
21.3.2 JavaScript源代碼的全數加密585
21.4 練習題586
附錄 練習題答案588
內容簡介
本書從基礎到不錯,主要闡釋JavaScript編程各層面的語法、觀念、實戰示例與習題。其內容深入淺出,主要內容包括:表達式與運算符,數據類型,條件和循環語句,函數與方法,處理數值、字符串、數組、自定義對像與日期和時間,DOM的事件素實例,Reflect、Proxy和Intl對像,window.navigator、window.document和BOM的多個對像實例,類,錯誤處理,數據的驗證與傳輸,響應式機制與源代碼加密。本書含有充足且具有創意的實戰示例,利於讀者學習、理解和實際運用。另外,各章末的習題也是用來演練學習成果的良方,可起到事半功倍的奇效。本書既適合業界的程序開發者閱讀,也可作為大中專院校與培訓機構的教學參考書。