第1章 ECMAScript 6簡介 001
1.1 ECMAScript和JavaScript的關係 001
1.2 ECMAScript的曆史 001
1.3 部署進度 002
1.4 Babel轉碼器 003
命令行環境 004
瀏覽器環境 005
Node.js環境 005
在綫轉換 006
1.5 Traceur轉碼器 006
直接插入網頁 006
在綫轉換 007
命令行轉換 008
Node.js環境的用法 008
1.6 ECMAScript 7 009
第2章 let和const命令 010
2.1 let命令 010
基本用法 010
不存在變量提升 011
暫時性死區 011
不允許重復聲明 012
2.2 塊級作用域 013
為什麼需要塊級作用域 013
ES6的塊級作用域 013
2.3 const命令 015
2.4 跨模塊常量 016
2.5 全局對象的屬性 017
第3章 變量的解構賦值 018
3.1 數組的解構賦值 018
基本用法 018
默認值 020
3.2 對象的解構賦值 021
3.3 字符串的解構賦值 024
3.4 數值和布爾值的解構賦值 024
3.5 函數參數的解構賦值 024
3.6 圓括號問題 025
不能使用圓括號的情況 025
可以使用圓括號的情況 026
3.7 用途 026
第4章 字符串的擴展 029
4.1 字符的Unicode錶示法 029
4.2 codePointAt() 030
4.3 String.fromCodePoint() 031
4.4 字符串的遍曆器接口 031
4.5 at() 032
4.6 normalize() 032
4.7 includes(),startsWith(),endsWith() 033
4.8 repeat() 033
4.9 padStart(),padEnd() 034
4.10 模闆字符串 034
4.11 實例:模闆編譯 037
4.12 標簽模闆 038
4.13 String.raw() 042
第5章 正則的擴展 043
5.1 RegExp 構造函數 043
5.2 字符串的正則方法 043
5.3 u 修飾符 043
5.4 y 修飾符 045
5.5 sticky 屬性 047
5.6 flags 屬性 048
5.7 RegExp.escape() 048
第6章 數值的擴展 049
6.1 二進製和八進製數值錶示法 049
6.2 Number.isFinite(), Number.isNaN() 049
6.3 Number.parseInt(), Number.parseFloat() 051
6.4 Number.isInteger() 051
6.5 Number.EPSILON 051
6.6 安全整數和Number.isSafeInteger() 052
6.7 Math 對象的擴展 054
Math.trunc() 054
Math.sign() 054
Math.cbrt() 055
Math.clz32() 055
Math.imul() 056
Math.fround() 056
Math.hypot() 057
對數方法 057
三角函數方法 058
6.8 指數運算符 058
第7章 數組的擴展 059
7.1 Array.from() 059
7.2 Array.of() 061
7.3 數組實例的copyWithin() 062
7.4 數組實例的find() 和findIndex() 063
7.5 數組實例的fill() 063
7.6 數組實例的entries()、keys() 和values() 064
7.7 數組實例的includes() 064
7.8 數組的空位 065
7.9 數組推導 067
第8章 函數的擴展 069
8.1 函數參數的默認值 069
基本用法 069
與解構賦值默認值結閤使用 070
參數默認值的位置 071
函數的length 屬性 072
作用域 073
應用 074
8.2 rest 參數 074
8.3 擴展運算符 075
含義 075
替代數組的apply 方法 076
擴展運算符的應用 077
8.4 name 屬性 079
8.5 箭頭函數 080
基本用法 080
使用注意點 081
嵌套的箭頭函數 083
8.6 函數綁定 084
8.7 尾調用優化 085
什麼是尾調用 085
尾調用優化 086
尾遞歸 087
遞歸函數的改寫 088
8.8 函數參數的尾逗號 089
第9章 對象的擴展 090
9.1 屬性的簡潔錶示法 090
9.2 屬性名錶達式 092
9.3 方法的name 屬性 093
9.4 Object.is() 094
9.5 Object.assign() 095
9.6 屬性的可枚舉性 097
9.7 屬性的遍曆 098
9.8 __proto__ 屬性, Object.setPrototypeOf(), Object.getPrototypeOf() 099
9.9 對象的擴展運算符 101
第10 章 Symbol 103
10.1 概述 103
10.2 作為屬性名的Symbol 105
10.3 實例:消除魔術字符串 106
10.4 屬性名的遍曆 107
10.5 Symbol.for(),Symbol.keyFor() 109
10.6 內置的Symbol 值 110
Symbol.hasInstance 110
Symbol.isConcatSpreadable 110
Symbol.species 111
Symbol.match 111
Symbol.replace 112
Symbol.search 112
Symbol.split 112
Symbol.iterator 112
Symbol.toPrimitive 113
Symbol.toStringTag 113
Symbol.unscopables 114
第11 章 Proxy 和Reflect 116
11.1 Proxy 概述 116
11.2 Proxy 實例的方法 119
get() 119
set() 121
apply() 122
has() 123
construct() 123
deleteProperty() 124
defineProperty() 125
enumerate() 125
getOwnPropertyDescriptor() 126
getPrototypeOf() 126
isExtensible() 127
ownKeys() 127
preventExtensions() 128
setPrototypeOf() 128
11.3 Proxy.revocable() 129
11.4 Reflect 概述 129
11.5 Reflect 對象的方法 130
第12 章 二進製數組 133
12.1 ArrayBuffer 對象 134
概述 134
ArrayBuffer.prototype.byteLength 135
ArrayBuffer.prototype.slice() 135
ArrayBuffer.isView() 136
12.2 TypedArray 視圖 136
概述 136
構造函數 136
數組方法 138
字節序 140
BYTES_PER_ELEMENT 屬性 141
ArrayBuffer 與字符串的互相轉換 142
溢齣 142
TypedArray.prototype.buffer 143
TypedArray.prototype.byteLength, TypedArray.prototype.byteOffset 143
TypedArray.prototype.length 143
TypedArray.prototype.set() 144
TypedArray.prototype.subarray() 144
TypedArray.prototype.slice() 144
TypedArray.of() 144
TypedArray.from() 145
12.3 復閤視圖 145
12.4 DataView 視圖 146
12.5 二進製數組的應用 148
AJAX 148
Canvas 148
WebSocket 149
Fetch API 149
File API 149
第13 章 Set 和Map 數據結構 151
13.1 Set 151
基本用法 151
Set 實例的屬性和方法 152
遍曆操作 153
13.2 WeakSet 155
13.3 Map 157
Map 結構的目的和基本用法 157
實例的屬性和操作方法 159
遍曆方法 160
與其他數據結構的互相轉換 162
13.4 WeakMap 164
第14 章 Iterator 和for...of 循環 166
14.1 Iterator 的概念 166
14.2 數據結構的默認Iterator 接口 168
14.3 調用Iterator 接口的場閤 172
14.4 字符串的Iterator 接口 173
14.5 Iterator 接口與Generator 函數 174
14.6 遍曆器對象的return()、throw() 175
14.7 for...of 循環 175
數組 175
Set 和Map 結構 177
計算生成的數據結構 177
類似數組的對象 178
對象 179
與其他遍曆語法的比較 180
第15 章 Generator 函數 181
15.1 簡介 181
基本概念 181
yield 語句 182
與Iterator 接口的關係 184
15.2 next 方法的參數 185
15.3 for...of 循環 187
15.4 Generator.prototype.throw() 189
15.5 Generator.prototype.return() 193
15.6 yield* 語句 194
15.7 作為對象屬性的Generator 函數 199
15.8 Generator 函數的this 200
15.9 Generator 函數推導 201
15.10 含義 202
Generator 與狀態機 202
Generator 與協程 202
15.11 應用 203
第16 章 Promise 對象 208
16.1 Promise 的含義 208
16.2 基本用法 208
16.3 Promise.prototype.then() 211
16.4 Promise.prototype.catch() 212
16.5 Promise.all() 215
16.6 Promise.race() 216
16.7 Promise.resolve() 216
16.8 Promise.reject() 217
16.9 兩個有用的附加方法 218
done() 218
finally() 218
16.10 應用 219
加載圖片 219
Generator 函數與Promise 的結閤 219
16.11 async 函數 220
第17 章 異步操作和async 函數 221
17.1 基本概念 221
異步 221
迴調函數 221
Promise 222
17.2 Generator 函數 223
協程 223
Generator 函數的概念 223
Generator 函數的數據交換和錯誤處理 224
異步任務的封裝 224
17.3 Thunk 函數 225
參數的求值策略 225
Thunk 函數的含義 226
JavaScript 語言的Thunk 函數 226
Thunkify 模塊 227
Generator 函數的流程管理 228
Thunk 函數的自動流程管理 229
17.4 co 模塊 230
基本用法 230
co 模塊的原理 230
基於Promise 對象的自動執行 231
co 模塊的源碼 232
處理並發的異步操作 233
17.5 async 函數 234
含義 234
async 函數的實現 235
async 函數的用法 236
注意點 236
與Promise、Generator 的比較 238
第18 章 Class 240
18.1 Class 基本語法 240
概述 240
constructor 方法 243
實例對象 243
name 屬性 244
Class 錶達式 245
不存在變量提升 245
嚴格模式 246
18.2 Class 的繼承 246
基本用法 246
類的prototype 屬性和__proto__ 屬性 247
extends 的繼承目標 248
Object.getPrototypeOf() 249
super 關鍵字 249
實例的__proto__ 屬性 250
18.3 原生構造函數的繼承 250
18.4 Class 的取值函數(getter)和存值函數(setter) 253
18.5 Class 的Generator 方法 254
18.6 Class 的靜態方法 254
18.7 Class 的靜態屬性 255
18.8 new.target 屬性 256
18.9 Mixin 模式的實現 258
第19 章 修飾器 259
19.1 類的修飾 259
19.2 方法的修飾 261
19.3 為什麼修飾器不能用於函數 262
19.4 core-decorators.js 263
@autobind 263
@readonly 263
@override 263
@deprecate(彆名@deprecated) 264
@suppressWarnings 265
19.5 使用修飾器實現自動發布事件 265
19.6 Mixin 266
19.7 Trait 267
19.8 Babel 轉碼器的支持 269
第20 章 Module 270
20.1 嚴格模式 271
20.2 export 命令 271
20.3 import 命令 272
20.4 模塊的整體加載 273
20.5 module 命令 274
20.6 export default 命令 274
20.7 模塊的繼承 276
20.8 ES6 模塊加載的實質 277
20.9 循環加載 278
CommonJS 模塊的加載原理 279
CommonJS 模塊的循環加載 279
ES6 模塊的循環加載 280
20.10 ES6 模塊的轉碼 282
ES6 module transpiler 282
SystemJS 282
第21 章 編程風格 284
21.1 塊級作用域 284
let 取代var 284
全局常量和綫程安全 285
嚴格模式 285
21.2 字符串 285
21.3 解構賦值 285
21.4 對象 286
21.5 數組 288
21.6 函數 288
21.7 Map 結構 289
21.8 Class 290
21.9 模塊 291
21.10 ESLint 的使用 292
第22 章 讀懂ECMAScript 規格 293
22.1 概述 293
22.2 相等運算符 293
22.3 數組的空位 295
22.4 數組的map 方法 296
第23 章 參考鏈接 299
23.1 官方文件 299
23.2 綜閤介紹 299
23.3 let 和const 302
23.4 解構賦值 302
23.5 字符串 303
23.6 正則 304
23.7 數值 304
23.8 數組 304
23.9 函數 305
23.10 對象 306
23.11 Proxy 和Reflect 306
23.12 Symbol 308
23.13 二進製數組 308
23.14 Set 和Map 309
23.15 Iterator 310
23.16 Generator 311
23.17 Promise 對象 312
23.18 Class 314
23.19 Decorator 314
23.20 Module 315
23.21 工具 316
· · · · · · (
收起)