JavaScript核心原理——從語言設計到應用實踐
- 出版商: 清華大學
- 出版日期: 2026-07-01
- 售價: $419
- 語言: 簡體中文
- 頁數: 304
- ISBN: 7302723184
- ISBN-13: 9787302723189
-
相關分類:
JavaScript
下單後立即進貨 (約4週~6週)
商品描述
本書將JavaScript語法與語言設計規範相結合,帶領讀者從規範的角度來理解引擎背後的執行機制。本書重點介紹 ES6及後續引入的內容,並涵蓋 ES2025及諸多特性。全書分為三大部分,共有16章,通過JavaScript初級、高級、進階三大部分,分別介紹JavaScript發展史、JavaScript類型系統、JavaScript代碼組織方式、JavaScript語言基礎、函數、對象、數組、日期與時間、國際化、正則表達式、Set和 Map、代理和反射、類、疊代器與生成器、異步編程和新特性等。 本書主要面向廣大從事 Web前端開發的技術人員、高等教育的專任教師、高等學校的在讀學生及相關領域的廣大科研人員。
作者簡介
孫凱,本科學歷,從事web開發7年。精通JavaScript語言,EcmaScript contributor(JavaScript語言實現標準規範貢獻者),對語言規範有深入理解。2020年為暢銷書《JavaScript高級程序設計》(第四版)提交30余處勘誤且被采納,與業界多位知名專家、作/譯者有過深度交流,熱愛開源分享。
目錄大綱
目錄
第1章JavaScript發展史1
1.1語言誕生1
1.1.1JavaScript 1.12
1.1.2JavaScript 1.23
1.2標準建立與命名4
1.2.1ECMAScript 2和ECMAScript 36
1.2.2ECMAScript 4與ECMAScript 3.1修訂版草案7
1.2.3嚴格模式與OneJS9
1.3統一與未來10
1.3.1更完善的提案制度10
1.3.2向前兼容的關鍵字12
1.3.3語義完善13
1.3.4簡化概念14
1.3.5快速發展14
1.3.6社區溝通15
1.3.7規範性公約15
第2章JavaScript類型系統18
2.1String類型18
2.1.1字符串編碼19
2.1.2多進制表示方式19
2.1.3代碼點轉換規則21
2.1.4計算JavaScript字符串中的符號數量22
2.1.5結構良好的字符串25
2.1.6結構良好的JSON.stringify26
2.1.7字符串的歸一化27
2.1.8模板字符串30
2.1.9標簽函數30
2.1.10字符串方法31
2.2數值33
2.2.1Number類型34
2.2.2BigInt類型36
2.2.3數值字面量的表示36
2.2.4數值的比較37
2.2.5數值的轉換38
2.2.6數值分隔符39
2.2.7數值與安全40
2.2.8精確求和40
2.3Boolean類型41
2.4Undefined類型和Null類型41
2.4.1空值判斷的演進42
2.4.2支持私有屬性44
2.4.3參數及解構默認值中的空值判定44
2.5Symbol類型46
2.5.1Symbol屬性檢索46
2.5.2Symbol共享體系47
2.5.3Wellknown Symbols48
2.6類型檢測56
2.6.1typeof是如何識別類型的56
2.6.2instanceof57
2.6.3Object.prototype.toString()58
2.6.4品牌檢查59
2.7類型轉換60
2.8不同類型的相等性測試62
第3章JavaScript代碼組織方式63
3.1腳本63
3.1.1腳本評估64
3.1.2全局聲明初始化64
3.1.3受限全局屬性與詞法遮蔽66
3.2模塊67
3.2.1導出語法68
3.2.2導入語法70
3.2.3重命名導入導出70
3.2.4間接綁定與模塊隱私性71
3.2.5模塊命名空間對象72
3.2.6模塊元數據72
3.2.7腳本中的模塊導入語法73
3.2.8導入和導出記錄73
3.2.9模塊加載階段75
3.2.10與CJS交互78
3.2.11動態導入79
3.2.12Import Attributes80
3.2.13JSON模塊80
3.2.14延遲模塊評估81
第4章JavaScript語言基礎82
4.1源代碼82
4.2標識符與保留字83
4.2.1關鍵字與保留字83
4.2.2有效標識符85
4.2.3可接受的Unicode符號87
4.3詞法環境與詞法聲明88
4.3.1TDZ的選擇與應用88
4.3.2暫時性死區的價值89
4.3.3const與不變性無關90
4.3.4丟棄綁定90
4.3.5聲明過程與提升91
4.3.6引用記錄規範類型92
4.4語句95
4.4.1可選的catch語句97
4.4.2Hashbang98
4.5表達式與操作符98
4.5.1邏輯賦值運算符98
4.5.2解構賦值99
4.6循環101
4.7可選的分號104
4.8上下文與環境記錄106
4.8.1作用域107
4.8.2環境組件的變遷108
4.9Realm110
4.10錯誤與異常113
4.10.1錯誤類別113
4.10.2throw表達式115
4.10.3Error Cause116
4.10.4Error.isError()117
第5章函數118
5.1函數基本構造118
5.1.1函數name屬性及其推斷119
5.1.2函數/類名的綁定方式120
5.1.3參數列表121
5.1.4非簡單參數122
5.1.5默認值參數計算位置122
5.1.6函數參數的傳遞方式123
5.1.7arguments對象125
5.1.8關於arguments對象不是數組的論點126
5.1.9函數內置屬性的可操作性126
5.1.10函數的toString()方法127
5.2箭頭函數129
5.3函數聲明及實例化過程130
5.4函數調用與this綁定131
5.5塊中的函數聲明132
5.6嚴格模式133
5.6.1嚴格模式下的擴展保留字134
5.6.2不支持未聲明變量賦值134
5.6.3不支持使用delete刪除未限定標識符134
5.6.4不支持隱式八進制134
5.6.5嚴格模式下函數中的限制134
5.6.6嚴格模式下對象操作的限制136
5.6.7不支持with語句136
5.6.8嚴格模式下禁止forin初始器137
5.7尾調用137
第6章對象139
6.1創建對象139
6.1.1屬性簡寫140
6.1.2可計算屬性141
6.1.3屬性的評估順序141
6.1.4訪問器屬性142
6.1.5類方法144
6.1.6對象的非規範構造方式145
6.2內部槽和內部方法146
6.2.1基本內部方法147
6.2.2定義而不是賦值148
6.2.3屬性的檢索與復制150
6.2.4更安全的屬性檢查機制150
6.2.5鍵的檢索順序151
6.3屬性描述符153
6.4原型155
6.4.1原型鏈156
6.4.2原型模式與繼承157
第7章數組159
7.1數組創建方式159
7.1.1數組字面量160
7.1.2Array160
7.1.3工廠方法160
7.1.4數組的length161
7.2索引訪問能力的擴展162
7.3數組方法163
7.3.1元素查找163
7.3.2反向查找164
7.3.3數組展平164
7.3.4數組排序165
7.3.5數組分組166
7.3.6數組截取166
7.3.7數組元素替換167
7.3.8通過復制更改數組的新方法167
7.3.9數組合並168
第8章日期與時間169
8.1Date169
8.1.1日期時間字符串格式171
8.1.2比較方法171
8.2Temporal172
8.2.1Now對象173
8.2.2Temporal.PlainDate對象175
8.2.3Temporal.PlainTime對象176
8.2.4Temporal.PlainDateTime對象176
8.2.5Temporal.ZonedDateTime對象177
8.2.6Temporal不變性179
8.2.7日歷系統180
8.2.8ISO 8601擴展181
8.2.9持續時間182
8.3時間計算與處理182
8.3.1四舍五入183
8.3.2時間跨度184
8.3.3時間比較185
8.3.4序列化185
8.3.5Temporal子類實例轉換186
8.3.6與Date互操作186
第9章國際化188
9.1區域標識188
9.2Intl.Collator189
9.3Intl Enumeration190
9.4Intl.NumberFormat190
9.4.1format()和formatToParts()方法191
9.4.2formatRange()和formatRangeToParts()方法193
9.4.3resolvedOptions()和supportedLocalesOf()方法193
9.5Intl.DisplayNames194
9.6Intl.ListFormat195
9.7Intl.Locale196
9.8Intl.PluralRules197
9.9Intl.Segmenter197
9.10Intl.DateTimeFormat198
9.10.1formatToParts()方法200
9.10.2formatRange()方法200
9.11Intl.RelativeTimeFormat201
9.12Intl.DurationFormat202
9.13擴展timeZoneName選項203
9.14國際化數字格式API擴展204
第10章正則表達式206
10.1構造函數與字面量206
10.2RegExp原型上的屬性207
10.2.1exec()方法207
10.2.2test()方法208
10.3Lookbehind208
10.4命名捕獲組209
10.5標誌212
10.5.1標誌獲取器212
10.5.2標誌修改212
10.5.3y標誌213
10.5.4u標誌213
10.5.5v標誌215
10.5.6s標誌216
10.5.7d標誌217
10.5.8模式修飾符217
10.6RegExp.escape()218
第11章Set和Map219
11.1Set221
11.1.1Set構造函數221
11.1.2新增Set方法222
11.2Map225
11.2.1Map構造函數225
11.2.2Set和Map的疊代操作226
11.3WeakSet227
11.4WeakMap227
11.5弱引用229
第12章代理與反射231
12.1代理陷阱與反射231
12.1.1apply陷阱232
12.1.2construct陷阱233
12.1.3defineProperty陷阱234
12.1.4deleteProperty陷阱235
12.1.5get陷阱235
12.1.6set陷阱236
12.1.7has陷阱237
12.1.8getPrototypeOf陷阱238
12.1.9setPrototypeOf陷阱239
12.1.10preventExtensions陷阱239
12.1.11isExtensible陷阱240
12.1.12getOwnPropertyDescriptor陷阱240
12.1.13ownKeys陷阱241
12.1.14代理陷阱小結242
12.2可撤銷代理242
12.3代理陷阱中的約束243
12.3.1apply和construct陷阱的約束243
12.3.2getPrototypeOf陷阱的約束243
12.3.3setPrototypeOf陷阱的約束243
12.3.4isExtensible陷阱的約束244
12.3.5preventExtensible陷阱的約束244
12.3.6get陷阱的約束244
12.3.7set陷阱的約束244
12.3.8defineProperty陷阱的約束244
12.3.9getOwnPropertyDescriptor陷阱的約束245
12.3.10has陷阱的約束245
12.3.11deleteProperty陷阱的約束245
12.3.12ownKeys陷阱的約束245
第13章類246
13.1擁抱類246
13.1.1最小化類提案與安全語法246
13.1.2類的特點247
13.2類語法247
13.3類字段249
13.3.1私有字段250
13.3.2私有字段的限制253
13.3.3靜態字段255
13.4類繼承256
13.4.1繼承目標257
13.4.2子類257
13.4.3構造函數原型鏈259
13.4.4父類覆寫與子類返回260
13.4.5類構造過程260
13.5類靜態塊261
13.6靜態類262
第14章疊代器與生成器264
14.1疊代器264
14.1.1可疊代對象265
14.1.2隱式調用268
14.1.3關閉疊代器269
14.1.4異步疊代271
14.1.5控制疊代272
14.2生成器273
14.2.1生成器函數構造274
14.2.2yield275
14.2.3生成器轉移控制權276
14.2.4生成器中的return277
14.2.5異步生成器278
14.2.6生成器作為默認疊代器279
14.3疊代器助手280
14.3.1map()方法280
14.3.2filter()方法281
14.3.3drop()方法281
14.3.4take()方法281
14.3.5flatMap()方法282
14.3.6reduce()方法282
14.3.7forEach()方法283
14.3.8some()和every()方法283
14.3.9find()方法283
14.3.10toArray()方法284
14.3.11from()方法284
14.4聯合疊代器285
14.5疊代器序列286
第15章異步編程287
15.1Promise288
15.2thenable289
15.3原型方法290
15.3.1then()方法291
15.3.2catch()方法292
15.3.3finally()方法292
15.4工具方法293
15.4.1創建已決議的Promise294
15.4.2Promise.all()方法294
15.4.3Promise.allSettled()方法295
15.4.4Promise.any()方法295
15.4.5Promise.race()方法296
15.4.6Promise.withResolvers()方法296
15.4.7Promise.try()方法297
15.5異步函數297
15.5.1await299
15.5.2forawaitof300
15.5.3頂層await302
第16章新特性305







