基本介紹
- 書名:JavaScript編程思想:從ES5到ES9
- 作者:柯霖廷
- ISBN:9787302526612
- 定價:118元
- 出版時間:2019.05.01
- 印次:1-1
- 印刷日期:2019.04.04
內容簡介,目 錄,
內容簡介
本書從基礎到高級,主要闡釋JavaScript編程各層面的語法、觀念、實戰示例與習題。其內容深入淺出,主要內容包括:表達式與運算符,數據類型,條件和循環語句,函式與方法,處理數值、字元串、數組、自定義對象與日期和時間,DOM的事件處理和元素實例,Reflect、Proxy和Intl對象,window.navigator、window.document和BOM的多個對象實例,類,錯誤處理,數據的驗證與傳輸,回響式機制與原始碼加密。本書含有充足且具有創意的實戰示例,利於讀者學習、理解和實際運用。另外,各章末的習題也是用來演練學習成果的良方,可起到事半功倍的奇效。本書既適合業界的程式開發者閱讀,也可作為大中專院校與培訓機構的教學參考書。
目 錄
第1章 ECMAScript簡介 1
1.1 概述 1
1.1.1 ECMAScript各版本 1
1.1.2 關於JavaScript 2
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.js 14
1.3.3 其他JavaScript Shell 14
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.12n進制的字面量(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.1if語句 90
4.1.2switch語句 94
4.2循環語句 96
4.2.1for相關語句(ES6) 96
4.2.2while相關語句 104
4.2.3break與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.1Promise對象的用法(ES6、ES9) 144
5.3.2聚集多個Promise對象(ES6) 148
5.3.3異步函式與等待表達式(ES8) 154
5.4練習題 156
第6章處理數值 159
6.1Number對象的內置屬性 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.2Number對象的內置函式 167
6.2.1轉換為特定進制的數碼字元串 167
6.2.2處理小數格式 170
6.2.3轉換為數值 172
6.2.4判斷是否為整數或有限數(ES6) 175
6.3Math對象 177
6.3.1Math對象的常量屬性 177
6.3.2Math對象的函式(ES6) 178
6.4練習題 189
第7章處理字元串 190
7.1String對象 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.1Array對象 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
第10章處理日期和時間 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
第11章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
第12章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.1details元素實例的切換事件 340
12.5.2滑鼠滾輪事件 341
12.5.3觸摸相關事件 342
12.5.4接收伺服器數據相關事件 344
12.6練習題 346
第13章Reflect對象 347
13.1Reflect對象介紹(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
第14章Proxy對象、Intl對象和navigator對象實例 371
14.1Proxy對象 371
14.1.1創建訪問代理機制的構造函式(ES6) 372
14.1.2確定被代理的特定對象(ES6) 373
14.1.3自定義代理函式(ES6) 373
14.1.4調試訪問代理機制(ES6) 375
14.2Intl對象 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.3window.navigator對象實例 381
14.3.1獲取瀏覽器相關信息 381
14.3.2獲取當前地理定位相關數據 383
14.4練習題 385
第15章window.document對象實例 386
15.1返回焦點所在的元素 386
15.2附加事件處理器至特定元素 388
15.3收養特定節點 390
15.4返回所有錨點元素構成的集合 392
15.5返回當前網址的相關屬性 393
15.6在當前網頁中動態生成HTML原始碼 394
15.7內含特定伺服器相關數據的cookie 396
15.8返回當前網頁編碼字元集的名稱 398
15.9創建代表新屬性的節點 398
15.10創建代表新注釋的節點 399
15.11創建代表新片段或新元素的節點 400
15.12創建代表新文本的節點 402
15.13返回當前網頁的根元素 404
15.14訪問當前網址的域名 405
15.15返回所有embed元素構成的集合 406
15.16返回所有form元素實例構成的集合 407
15.17返回特定身份識別碼的元素實例 408
15.18返回被設定帶有特定CSS類名的所有元素實例的集合 411
15.19返回特定標籤名稱的所有元素實例的集合 414
15.20判斷當前網頁是否存在焦點 416
15.21返回當前網頁的head元素實例 417
15.22返回當前網頁所有image元素實例的集合 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返回當前網頁中的所有script元素實例構成的集合 433
15.31訪問當前網頁的標題文本 434
15.32練習題 435
第16章DOM的元素實例 437
16.1設定焦點跳轉至特定元素實例上的快捷鍵 437
16.2創建特定元素實例的動畫效果(WebAnimations) 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
第17章BOM的多個對象實例 492
17.1window對象實例 492
17.1.1顯示多種對話框與搜尋特定文本 492
17.1.2滾動至坐標或滾動特定距離 496
17.2screen對象實例 498
17.3history對象實例 499
17.4location對象實例 501
17.5練習題 503
第18章類 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
第19章錯誤處理 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.1HTML表單的內置驗證 538
20.1.1必填驗證 538
20.1.2字元個數和數值範圍的驗證 540
20.2自定義的驗證 542
20.2.1文本欄位的模式驗證 544
20.2.2JavaScript原始碼實現的驗證 545
20.3異步數據傳輸 548
20.3.1AJAX的工作原理 549
20.3.2AJAX的編程方式 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.2JavaScript原始碼的全數加密 585
21.4練習題 586
附錄練習題答案 588