ES6是下一代語言標準的統稱,每年6月發布一次修訂版,迄今為止已經發布瞭3個版本,分彆是ES2015、ES2016、ES2017。本書根據ES2017標準,詳盡介紹瞭所有新增的語法,對基本概念、設計目的和用法進行瞭清晰的講解,給齣瞭大量簡單易懂的示例。本書為中級難度,適閤那些已經對語言有一定瞭解的讀者,可以作為學習這門語言*新進展的工具書,也可以作為參考手冊供大傢隨時查閱新語法。第3版增加瞭**過30%的內容,完全覆蓋瞭ES2017標準,相比第2版介紹瞭更多的語法點,還調整瞭原有章節的文字錶達,充實瞭示例,論述更準確,更易懂易學。
目錄
第1章 ECMAScript 6簡介1
1.1 ECMAScript和的關係1
1.2 ES6與ECMAScript 2015的關係1
1.3 語法提案的批準流程2
1.4 ECMAScript的曆史3
1.5 部署進度4
1.6 Babel 轉碼器4
1.6.1 配置文件.babelrc5
1.6.2 命令行轉碼babel-cli6
1.6.3 babel-node7
1.6.4 babel-register8
1.6.5 babel-core8
1.6.6 babel-polyfill9
1.6.7 瀏覽器環境10
1.6.8 在綫轉換10
1.6.9 與其他工具的配閤11
1.7 Traceur轉碼器11
1.7.1 直接插入網頁12
1.7.2 在綫轉換13
1.7.3 命令行轉換14
1.7.4 Node環境的用法15
第2章 let和const命令17
2.1 let 命令17
2.1.1 基本用法17
2.1.2 不存在變量提升19
2.1.3 暫時性死區19
2.1.4 不允許重復聲明21
2.2 塊級作用域22
2.2.1 為什麼需要塊級作用域22
2.2.2 ES6的塊級作用域23
2.2.3 塊級作用域與函數聲明24
2.2.4 do錶達式27
2.3 const命令28
2.3.1 基本用法28
2.3.2 本質29
2.3.3 ES6聲明變量的6種方法30
2.4 頂層對象的屬性30
2.5 global對象31
第3章 變量的解構賦值33
3.1 數組的解構賦值33
3.1.1 基本用法33
3.1.2 默認值35
3.2 對象的解構賦值37
3.3 字符串的解構賦值41
3.4 數值和布爾值的解構賦值41
3.5 函數參數的解構賦值42
3.6 圓括號問題43
3.6.1 不能使用圓括號的情況43
3.6.2 可以使用圓括號的情況44
3.7 用途44
第4章 字符串的擴展49
4.1 字符的Unicode錶示法49
4.2 codePointAt()50
4.3 String.fromCodePoint()52
4.4 字符串的遍曆器接口52
4.5 at()53
4.6 normalize()53
4.7 includes()、startsWith()、endsWith()54
4.8 repeat()55
4.9 padStart()、padEnd()56
4.10 模闆字符串57
4.11 實例:模闆編譯60
4.12 標簽模闆62
4.13 String.raw()67
4.14 模闆字符串的限製68
第5章 正則的擴展71
5.1 RegExp構造函數71
5.2 字符串的正則方法72
5.3 u修飾符72
5.4 y修飾符74
5.5 sticky屬性77
5.6 flags屬性77
5.7 s修飾符:dotAll模式78
5.8 後行斷言79
5.9 Unicode屬性類80
5.10 具名組匹配81
5.10.1 簡介81
5.10.2 解構賦值和替換82
5.10.3 引用83
第6章 數值的擴展85
6.1 二進製和八進製錶示法85
6.2 Number.isFinite()、Number.isNaN()86
6.3 Number.parseInt()、Number.parseFloat()87
6.4 Number.isInteger()88
6.5 Number.EPSILON88
6.6 安全整數和Number.isSafeInteger()89
6.7 Math對象的擴展92
6.7.1 Math.trunc()92
6.7.2 Math.sign()92
6.7.3 Math.cbrt()93
6.7.4 Math.clz32()94
6.7.5 Math.imul()95
6.7.6 Math.fround()95
6.7.7 Math.hypot()96
6.7.8 對數方法96
6.7.9 雙麯函數方法98
6.8 Math.signbit()98
6.9 指數運算符99
6.10 Integer數據類型99
6.10.1 簡介99
6.10.2 運算100
第7章 函數的擴展103
7.1 函數參數的默認值103
7.1.1 基本用法103
7.1.2 與解構賦值默認值結閤使用105
7.1.3 參數默認值的位置107
7.1.4 函數的length屬性108
7.1.5 作用域108
7.1.6 應用111
7.2 rest參數112
7.3 嚴格模式113
7.4 name屬性115
7.5 箭頭函數116
7.5.1 基本用法116
7.5.2 注意事項118
7.5.3 嵌套的箭頭函數121
7.6 綁定this123
7.7 尾調用優化124
7.7.1 什麼是尾調用124
7.7.2 尾調用優化125
7.7.3 尾遞歸126
7.7.4 遞歸函數的改寫128
7.7.5 嚴格模式129
7.7.6 尾遞歸優化的實現129
7.8 函數參數的尾逗號132
第8章 數組的擴展133
8.1 擴展運算符133
8.1.1 含義133
8.1.2 替代數組的apply方法134
8.1.3 擴展運算符的應用136
8.2 Array.from()139
8.3 Array.of()142
8.4 數組實例的copyWithin()143
8.5 數組實例的find()和findIndex()144
8.6 數組實例的fill()145
8.7 數組實例的entries()、keys()和values()145
8.8 數組實例的includes()146
8.9 數組的空位147
第9章 對象的擴展151
9.1 屬性的簡潔錶示法151
9.2 屬性名錶達式154
9.3 方法的name屬性156
9.4 Object.is()157
9.5 Object.assign()158
9.5.1 基本用法158
9.5.2 注意點160
9.5.3 常見用途161
9.6 屬性的可枚舉性163
9.7 屬性的遍曆165
9.8 __proto__ 屬性、Object.setPrototypeOf()、Object.getPrototypeOf()166
9.8.1 __proto__ 屬性166
9.8.2 Object.setPrototypeOf()167
9.8.3 Object.getPrototypeOf()168
9.9 Object.keys()、Object.values()、Object.entries()169
9.9.1 Object.keys()169
9.9.2 Object.values()170
9.9.3 Object.entries171
9.10 對象的擴展運算符173
9.11 Object.getOwnPropertyDescriptors()177
9.12 Null傳導運算符181
第10章 Symbol183
10.1 概述183
10.2 作為屬性名的Symbol185
10.3 實例:消除魔術字符串188
10.4 屬性名的遍曆189
10.5 Symbol.for()、Symbol.keyFor()191
10.6 實例:模塊的Singleton模式192
10.7 內置的Symbol值194
10.7.1 Symbol.hasInstance194
10.7.2 Symbol.isConcatSpreadable195
10.7.3 Symbol.species196
10.7.4 Symbol.match197
10.7.5 Symbol.replace197
10.7.6 Symbol.search198
10.7.7 Symbol.split198
10.7.8 Symbol.iterator199
10.7.9 Symbol.toPrimitive200
10.7.10 Symbol.toStringTag201
10.7.11 Symbol.unscopables202
第11章 Set和Map數據結構205
11.1 Set205
11.1.1 基本用法205
11.1.2 Set實例的屬性和方法207
11.1.3 遍曆操作208
11.2 WeakSet212
11.2.1 含義212
11.2.2 語法212
11.3 Map214
11.3.1 含義和基本用法214
11.3.2 實例的屬性和操作方法218
11.3.3 遍曆方法220
11.3.4 與其他數據結構的互相轉換222
11.4 WeakMap225
11.4.1 含義225
11.4.2 WeakMap的語法227
11.4.3 WeakMap示例228
11.4.4 WeakMap的用途229
第12章 Proxy233
12.1 概述233
12.2 Proxy實例的方法237
12.2.1 get()237
12.2.2 set()241
12.2.3 apply()243
12.2.4 has()244
12.2.5 construct()246
12.2.6 deleteProperty()247
12.2.7 defineProperty()248
12.2.8 getOwnPropertyDescriptor()248
12.2.9 getPrototypeOf()249
12.2.10 isExtensible()249
12.2.11 ownKeys()250
12.2.12 preventExtensions()254
12.2.13 setPrototypeOf()255
12.3 Proxy.revocable()255
12.4 this問題256
12.5 實例:Web服務的客戶端258
第13章 Reflect259
13.1 概述259
13.2 靜態方法261
13.2.1 Reflect.get(target, name, receiver)262
13.2.2 Reflect.set(target, name, value, receiver)263
13.2.3 Reflect.has(obj, name)264
13.2.4 Reflect.deleteProperty(obj, name)265
13.2.5 Reflect.construct(target, args)265
13.2.6 Reflect.getPrototypeOf(obj)265
13.2.7 Reflect.setPrototypeOf(obj, newProto)266
13.2.8 Reflect.apply(func, thisArg, args)267
13.2.9 Reflect.defineProperty(target, propertyKey, attributes)267
13.2.10 Reflect.getOwnPropertyDescriptor (target, propertyKey)268
13.2.11 Reflect.isExtensible (target)268
13.2.12 Reflect.preventExtensions(target)269
13.2.13 Reflect.ownKeys (target)269
13.3 實例:使用Proxy實現觀察者模式270
第14章 Promise對象273
14.1 Promise的含義273
14.2 基本用法274
14.3 Promise.prototype.then()278
14.4 Promise.prototype.catch()279
14.5 Promise.all()285
14.6 Promise.race()287
14.7 Promise.resolve()288
14.8 Promise.reject()290
14.9 兩個有用的附加方法291
14.9.1 done()291
14.9.2 finally()292
14.10 應用292
14.10.1 加載圖片292
14.10.2 Generator函數與Promise的結閤293
14.11 Promise.try()294
第15章 Iterator和for...of循環297
15.1 Iterator(遍曆器)的概念297
15.2 默認Iterator接口300
15.3 調用Iterator接口的場閤305
15.4 字符串的Iterator接口307
15.5 Iterator接口與Generator函數308
15.6 遍曆器對象的return()、throw()309
15.7 for...of循環310
15.7.1 數組310
15.7.2 Set和Map結構311
15.7.3 計算生成的數據結構312
15.7.4 類似數組的對象313
15.7.5 對象314
15.7.6 與其他遍曆語法的比較315
第16章 Generator函數的語法317
16.1 簡介317
16.1.1 基本概念317
16.1.2 yield錶達式319
16.1.3 與Iterator接口的關係322
16.2 next方法的參數323
16.3 for...of循環325
16.4 Generator.prototype.throw()328
16.5 Generator.prototype.return()334
16.6 yield*錶達式335
16.7 作為對象屬性的Generator函數342
16.8 Generator函數this342
16.9 含義345
16.9.1 Generator與狀態機345
16.9.2 Generator與協程346
16.10 應用347
16.10.1 異步操作的同步化錶達347
16.10.2 控製流管理348
16.10.3 部署Iterator接口351
16.10.4 作為數據結構352
第17章 Generator函數的異步應用355
17.1 傳統方法355
17.2 基本概念355
17.2.1 異步355
17.2.2 迴調函數356
17.2.3 Promise356
17.3 Generator函數357
17.3.1 協程357
17.3.2 協程的Generator函數實現358
17.3.3 Generator函數的數據交換和錯誤處理359
17.3.4 異步任務的封裝360
17.4 Thunk函數361
17.4.1 參數的求值策略361
17.4.2 Thunk函數的含義362
17.4.3 語言的Thunk函數362
17.4.4 Thunkify模塊364
17.4.5 Generator函數的流程管理365
17.4.6 Thunk函數的自動流程管理367
17.5 co模塊368
17.5.1 基本用法368
17.5.2 co模塊的原理369
17.5.3 基於Promise對象的自動執行369
17.5.4 co模塊的源碼371
17.5.5 處理並發的異步操作372
17.6 實例:處理 Stream373
第18章 async函數375
18.1 含義375
18.2 用法377
18.3 語法379
18.3.1 返迴Promise對象379
18.3.2 Promise對象的狀態變化379
18.3.3 await命令380
18.3.4 錯誤處理382
18.3.5 使用注意點383
18.4 async函數的實現原理386
18.5 其他異步處理方法的比較387
18.6 實例:按順序完成異步操作388
18.7 異步遍曆器390
18.7.1 異步遍曆的接口390
18.7.2 for await...of392
18.7.3 異步Generator函數393
18.7.4 yield*語句398
第19章 Class的基本語法399
19.1 簡介399
19.2 嚴格模式403
19.3 constructor方法403
19.4 類的實例對象404
19.5 Class錶達式406
19.6 不存在變量提升407
19.7 私有方法408
19.8 私有屬性409
19.9 this的指嚮410
19.10 name屬性412
19.11 Class的取值函數(getter)和存值函數(setter)412
19.12 Class的Generator方法413
19.13 Class的靜態方法414
19.14 Class的靜態屬性和實例屬性415
19.14.1 Class的實例屬性416
19.14.2 Class的靜態屬性417
19.15 new.target屬性418
第20章 Class的繼承421
20.1 簡介421
20.2 Object.getPrototypeOf()423
20.3 super關鍵字423
20.4 類的prototype屬性和 __proto__ 屬性429
20.4.1 extends的繼承目標430
20.4.2 實例的 __proto__ 屬性432
20.5 原生構造函數的繼承432
20.6 Mixin模式的實現436
第21章 修飾器439
21.1 類的修飾439
21.2 方法的修飾442
21.3 為什麼修飾器不能用於函數444
21.4 core-decorators.js446
21.5 使用修飾器實現自動發布事件449
21.6 Mixin450
21.7 Trait453
21.8 Babel轉碼器的支持456
第22章 Module的語法457
22.1 概述457
22.2 嚴格模式458
22.3 export命令459
22.4 import命令462
22.5 模塊的整體加載464
22.6 export default命令465
22.7 export與import的復閤寫法468
22.8 模塊的繼承469
22.9 跨模塊常量470
22.10 import()471
22.10.1 簡介471
22.10.2 適用場閤472
22.10.3 注意點473
第23章 Module的加載實現475
23.1 瀏覽器加載475
23.1.1 傳統方法475
23.1.2 加載規則476
23.2 ES6模塊與CommonJS模塊的差異477
23.3 Node加載481
23.3.1 概述481
23.3.2 import命令加載CommonJS模塊482
23.3.3 require命令加載ES6模塊484
23.4 循環加載485
23.4.1 CommonJS模塊的加載原理485
23.4.2 CommonJS模塊的循環加載486
23.4.3 ES6模塊的循環加載488
23.5 ES6模塊的轉碼492
23.5.1 ES6 module transpiler492
23.5.2 SystemJS492
第24章 編程風格495
24.1 塊級作用域495
24.1.1 let取代var495
24.1.2 全局常量和綫程安全496
24.2 字符串497
24.3 解構賦值497
24.4 對象498
24.5 數組500
24.6 函數501
24.7 Map結構503
24.8 Class503
24.9 模塊504
24.10 ESLint的使用506
第25章 讀懂ECMAScript規格509
25.1 概述509
25.2 相等運算符510
25.3 數組的空位511
25.4 數組的map方法513
.......
非常好的书,看了很多遍
评分书是没什么问题 ,就是送货慢 送了半个多月
评分非常好的书,看了很多遍
评分非常好的书,看了很多遍
评分书挺好的
评分书挺好的
评分不错!刚收到!
评分不错!刚收到!
评分书挺好的
本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有