《深入理解現代JavaScript》是2022年4月清華大學出版社出版的圖書,作者是[美]T. J. 克羅德(T. J. Crowder),譯者是趙永和盧賢潑。
基本介紹
- 中文名:深入理解現代JavaScript
- 作者:[美]T. J. 克羅德(T. J. Crowder)
- 譯者:趙永、盧賢潑
- 出版社:清華大學出版社
- 出版時間:2022年4月
- 頁數:512 頁
- 定價:128 元
- 開本:16 開
- 裝幀:平裝
- ISBN:9787302602118
內容簡介,圖書目錄,
內容簡介
本書主要內容 l 涵蓋ES2015~ES2020中JavaScript的所有新特性以及下一版的預覽。 l 探索**的語法:空值合併、可選鏈、let和const、類語法、私有方法、私有欄位、new.target、數字分隔設定、BigInt、解構、默認參數、箭頭函式、異步函式、await、生成器函式、…(rest和spread操作符)、模板字面量、二進制和八進制字面量、**(求冪運算符)、計算屬性/方法名、for-of、for-await-of、屬性的簡寫語法等。 l 詳細介紹新特性和模式:模組、Promise、疊代、生成器、Symbol、代理、反射、類型化數組、Atomics、共享記憶體、WeakMap、WeakSet等。 l 揭示常見的陷阱並闡述如何避免它們。 l 展示如何跟進和參與JavaScript的改進流程。 l 介紹如何在新特性獲得廣泛支持之前使用它們。
圖書目錄
第1章 ES2015~ES2020及後續版本的
新特性 1
1.1 名稱、定義和術語 2
1.1.1 Ecma?ECMAScript?TC39? 2
1.1.2 ES6?ES7?ES2015?ES2020? 2
1.1.3 JavaScript“引擎”、瀏覽器及其他 3
1.2 什麼是“新特性” 3
1.3 新特性的推動流程 5
1.3.1 誰負責 5
1.3.2 流程 5
1.3.3 參與 6
1.3.4 跟上新特性的步伐 7
1.4 舊環境中使用新特性 8
1.5 本章小結 12
第2章 塊級作用域聲明:let和const 13
2.1 let和const的介紹 13
2.2 真正的塊級作用域 14
2.3 重複聲明將拋出錯誤 15
2.4 提升和暫時性死區 15
2.5 一種新的全局變數 17
2.6 const:JavaScript的常量 19
2.6.1 const基礎 19
2.6.2 常量引用的對象仍然是可變的 20
2.7 循環中的塊級作用域 21
2.7.1 “循環中的閉包”問題 21
2.7.2 綁定:變數、常量以及其他
標識符的工作方式 23
2.7.3 while和do-while循環 27
2.7.4 性能影響 28
2.7.5 循環塊中的const 29
2.7.6 for-in循環中的const 29
2.8 舊習換新 30
2.8.1 用const或let替代var 30
2.8.2 縮小變數的作用域 30
2.8.3 用塊級作用域替代匿名函式 30
第3章 函式的新特性 33
3.1 箭頭函式和this、super等詞法 34
3.1.1 箭頭函式語法 34
3.1.2 箭頭函式和this詞法 37
3.1.3 箭頭函式不能被用作構造函式 38
3.2 默認參數值 38
3.2.1 默認值是表達式 39
3.2.2 默認值在自己的作用域中被計算 40
3.2.3 默認值不會增加函式的arity 42
3.3 “rest”參數 42
3.4 參數列表和函式調用中的
尾後逗號 44
3.5 函式的name屬性 45
3.6 在語句塊中聲明函式 46
3.6.1 在語句塊中聲明函式:標準語義 48
3.6.2 在語句塊中聲明函式:
傳統Web語義 49
3.7 舊習換新 51
3.7.1 使用箭頭函式替代各種訪問this
值的變通方式 51
3.7.2 在不使用this或arguments時,
回調函式使用箭頭函式 52
3.7.3 考慮在更多地方使用箭頭函式 52
3.7.4 當調用者需要控制this的值時,
不要使用箭頭函式 53
3.7.5 使用參數默認值,而不是
代碼實現 53
3.7.6 使用“rest”參數替代arguments
關鍵字 53
3.7.7 如有必要,考慮使用尾後逗號 53
第4章 類 55
4.1 類的概念 55
4.2 介紹新的類語法 56
4.2.1 添加構造函式 57
4.2.2 添加實例屬性 59
4.2.3 添加原型方法 59
4.2.4 添加靜態方法 61
4.3 添加訪問器屬性 61
4.4 對比新語法和舊語法 64
4.5 創建子類 66
4.6 關鍵字super 69
4.6.1 編寫子類構造函式 69
4.6.2 繼承和訪問超類原型的屬性和
方法 70
4.6.3 繼承靜態方法 73
4.6.4 靜態方法中的super 75
4.6.5 返回新實例的方法 75
4.6.6 內置對象的子類 79
4.6.7 super的使用 81
4.7 移除Object.prototype 83
4.8 new.target 84
4.9 類聲明與類表達式 87
4.9.1 類聲明 87
4.9.2 類表達式 88
4.10 更多內容 89
4.11 舊習換新 89
第5章 對象的新特性 91
5.1 可計算屬性名 91
5.2 屬性的簡寫語法 92
5.3 獲取和設定對象原型 93
5.3.1 Object.setPrototypeOf 93
5.3.2 瀏覽器環境中的__proto__屬性 94
5.3.3 瀏覽器環境中的__proto__字面量
屬性名 94
5.4 對象方法的簡寫語法,以及類
之外的super 95
5.5 Symbol 97
5.5.1 定義Symbol的原因 97
5.5.2 創建和使用Symbol 99
5.5.3 Symbol並不用於私有屬性 99
5.5.4 全局Symbol 100
5.5.5 內置的Symbol值 103
5.6 對象的新增方法 104
5.6.1 Object.assign 104
5.6.2 Object.is 105
5.6.3 Object.values 105
5.6.4 Object.entries 106
5.6.5 Object.fromEntries 106
5.6.6 Object.getOwnPropertySymbols 106
5.6.7 Object.getOwnPropertyDescriptors 106
5.7 Symbol.toPrimitive 107
5.8 屬性順序 109
5.9 屬性擴展語法 110
5.10 舊習換新 111
5.10.1 創建對象時對動態變數使用可
計算屬性名 111
5.10.2 從同名變數初始化對象時,
使用簡寫語法 111
5.10.3 使用Object.assign替代自定義的
擴展方法或者顯式複製所有
屬性 112
5.10.4 基於已有對象創建新對象時,
使用屬性擴展語法 112
5.10.5 使用Symbol避免屬性名衝突 112
5.10.6 使用Object.getPrototypeOf/
setPrototypeOf替代__proto__ 112
5.10.7 使用對象方法的簡寫語法來
定義對象中的方法 112
第6章 可疊代對象、疊代器、for-of循環、
可疊代對象的展開語法和
生成器 115
第18章 即將推出的類特性 435
18.1 公有和私有的類欄位、方法和
訪問器 435
18.1.1 公有欄位(屬性)定義 436
18.1.2 私有欄位 440
18.1.3 私有實例方法和訪問器 446
18.1.4 公有靜態欄位、私有靜態欄位和
私有靜態方法 450
18.2 舊習換新 452
18.2.1 使用屬性定義,而不是在構造
函式中創建屬性 (在適當的情況下) 452
18.2.2 使用私有類欄位,而不是前綴
(在適當的情況下) 453
18.2.3 使用私有方法 (而不是類外的函式)進行私有操作 453
第19章 展望未來 457
19.1 頂層await 458
19.1.1 概述和用例 458
19.1.2 示例 459
19.1.3 錯誤處理 463
19.2 WeakRef和清理回調 464
19.2.1 WeakRef 464
19.2.2 清理回調 466
19.3 正則表達式匹配索引 471
19.4 String.prototype.replaceAll 472
19.5 Atomics的asyncWait方法 472
19.6 其他語法微調 473
19.6.1 數字分隔設定 473
19.6.2 支持hashbang 474
19.7 廢棄舊的正則表達式特性 474
19.8 感謝閱讀 475
附錄 出色的特性及對應的章
(向J.K. Rowling致歉) 477