ES6是下一代JavaScript語言標準的統(tǒng)稱,每年6月一次修訂版,迄今為止已經(jīng)了3個版本,分別是ES2015、ES2016、ES2017。本書根據(jù)ES2017標準,詳盡介紹了所有新增的語法,對基本概念、設(shè)計目的和用法進行了清晰的講解,給出了大量簡單易懂的示例。本書為中級難度,適合那些已經(jīng)對JavaScript語言有一定了解的讀者,可以作為學(xué)習(xí)這門語言進展的工具書,也可以作為參考手冊供大家隨時查閱新語法。第3版增加了超過30%的內(nèi)容,覆蓋了ES2017標準,相比第2版介紹了更多的語法點,還調(diào)整了原有章節(jié)的文字表達,充實了示例,論述更,更易懂易學(xué)。
√ 橫跨ES2015/2016/2017新標,搶占JavaScript制高點
√ 由千萬級名博、布道引領(lǐng)無數(shù)前端入行的阮一峰執(zhí)筆
√ 來自BAT一線實踐,精彩案例透徹解讀新標|保留語法
√ 新標首著,凝結(jié)多年研究心得,剖析ES理解應(yīng)用難題
阮一峰,博學(xué)JavaScript 語言專家,知名技術(shù)博客作者,專注于網(wǎng)站開發(fā)技術(shù)十余年。暢銷書《黑客與畫家》、《軟件隨想錄》的譯者,現(xiàn)就職于螞蟻金服集團。
目錄
第1章 ECMAScript 6簡介 1
1.1 ECMAScript和JavaScript的關(guān)系 1
1.2 ES6與ECMAScript 2015的關(guān)系 1
1.3 語法提案的批準流程 2
1.4 ECMAScript的歷史 3
1.5 部署進度 4
1.6 Babel 轉(zhuǎn)碼器 4
1.6.1 配置文件.babelrc 5
1.6.2 命令行轉(zhuǎn)碼babel-cli 6
1.6.3 babel-node 7
1.6.4 babel-register 8
1.6.5 babel-core 8
1.6.6 babel-polyfill 9
1.6.7 瀏覽器環(huán)境 10
1.6.8 在線轉(zhuǎn)換 10
1.6.9 與其他工具的配合 11
1.7 Traceur轉(zhuǎn)碼器 11
1.7.1 直接插入網(wǎng)頁 12
1.7.2 在線轉(zhuǎn)換 13
1.7.3 命令行轉(zhuǎn)換 14
1.7.4 Node環(huán)境的用法 15
第2章 let和const命令 17
2.1 let 命令 17
2.1.1 基本用法 17
2.1.2 不存在變量提升 19
2.1.3 暫時性死區(qū) 19
2.1.4 不允許重復(fù)聲明 21
2.2 塊級作用域 22
2.2.1 為什么需要塊級作用域 22
2.2.2 ES6的塊級作用域 23
2.2.3 塊級作用域與函數(shù)聲明 24
2.2.4 do表達式 27
2.3 const命令 28
2.3.1 基本用法 28
2.3.2 本質(zhì) 29
2.3.3 ES6聲明變量的6種方法 30
2.4 頂層對象的屬性 30
2.5 global對象 31
第3章 變量的解構(gòu)賦值 33
3.1 數(shù)組的解構(gòu)賦值 33
3.1.1 基本用法 33
3.1.2 默認值 35
3.2 對象的解構(gòu)賦值 37
3.3 字符串的解構(gòu)賦值 41
3.4 數(shù)值和布爾值的解構(gòu)賦值 41
3.5 函數(shù)參數(shù)的解構(gòu)賦值 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 標簽?zāi)0?62
4.13 String.raw() 67
4.14 模板字符串的限制 68
第5章 正則的擴展 71
5.1 RegExp構(gòu)造函數(shù) 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 解構(gòu)賦值和替換 82
5.10.3 引用 83
第6章 數(shù)值的擴展 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.EPSILON 88
6.6 安全整數(shù)和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 對數(shù)方法 96
6.7.9 雙曲函數(shù)方法 98
6.8 Math.signbit() 98
6.9 指數(shù)運算符 99
6.10 Integer數(shù)據(jù)類型 99
6.10.1 簡介 99
6.10.2 運算 100
第7章 函數(shù)的擴展 103
7.1 函數(shù)參數(shù)的默認值 103
7.1.1 基本用法 103
7.1.2 與解構(gòu)賦值默認值結(jié)合使用 105
7.1.3 參數(shù)默認值的位置 107
7.1.4 函數(shù)的length屬性 108
7.1.5 作用域 108
7.1.6 應(yīng)用 111
7.2 rest參數(shù) 112
7.3 嚴格模式 113
7.4 name屬性 115
7.5 箭頭函數(shù) 116
7.5.1 基本用法 116
7.5.2 注意事項 118
7.5.3 嵌套的箭頭函數(shù) 121
7.6 綁定this 123
7.7 尾調(diào)用優(yōu)化 124
7.7.1 什么是尾調(diào)用 124
7.7.2 尾調(diào)用優(yōu)化 125
7.7.3 尾遞歸 126
7.7.4 遞歸函數(shù)的改寫 128
7.7.5 嚴格模式 129
7.7.6 尾遞歸優(yōu)化的實現(xiàn) 129
7.8 函數(shù)參數(shù)的尾逗號 132
第8章 數(shù)組的擴展 133
8.1 擴展運算符 133
8.1.1 含義 133
8.1.2 替代數(shù)組的apply方法 134
8.1.3 擴展運算符的應(yīng)用 136
8.2 Array.from() 139
8.3 Array.of() 142
8.4 數(shù)組實例的copyWithin() 143
8.5 數(shù)組實例的find()和findIndex() 144
8.6 數(shù)組實例的fill() 145
8.7 數(shù)組實例的entries()、keys()和values() 145
8.8 數(shù)組實例的includes() 146
8.9 數(shù)組的空位 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.entries 171
9.10 對象的擴展運算符 173
9.11 Object.getOwnPropertyDescriptors() 177
9.12 Null傳導(dǎo)運算符 181
第10章 Symbol 183
10.1 概述 183
10.2 作為屬性名的Symbol 185
10.3 實例:消除魔術(shù)字符串 188
10.4 屬性名的遍歷 189
10.5 Symbol.for()、Symbol.keyFor() 191
10.6 實例:模塊的Singleton模式 192
10.7 內(nèi)置的Symbol值 194
10.7.1 Symbol.hasInstance 194
10.7.2 Symbol.isConcatSpreadable 195
10.7.3 Symbol.species 196
10.7.4 Symbol.match 197
10.7.5 Symbol.replace 197
10.7.6 Symbol.search 198
10.7.7 Symbol.split 198
10.7.8 Symbol.iterator 199
10.7.9 Symbol.toPrimitive 200
10.7.10 Symbol.toStringTag 201
10.7.11 Symbol.unscopables 202
第11章 Set和Map數(shù)據(jù)結(jié)構(gòu) 205
11.1 Set 205
11.1.1 基本用法 205
11.1.2 Set實例的屬性和方法 207
11.1.3 遍歷操作 208
11.2 WeakSet 212
11.2.1 含義 212
11.2.2 語法 212
11.3 Map 214
11.3.1 含義和基本用法 214
11.3.2 實例的屬性和操作方法 218
11.3.3 遍歷方法 220
11.3.4 與其他數(shù)據(jù)結(jié)構(gòu)的互相轉(zhuǎn)換 222
11.4 WeakMap 225
11.4.1 含義 225
11.4.2 WeakMap的語法 227
11.4.3 WeakMap示例 228
11.4.4 WeakMap的用途 229
第12章 Proxy 233
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服務(wù)的客戶端 258
第13章 Reflect 259
13.1 概述 259
13.2 靜態(tài)方法 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實現(xiàn)觀察者模式 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 應(yīng)用 292
14.10.1 加載圖片 292
14.10.2 Generator函數(shù)與Promise的結(jié)合 293
14.11 Promise.try() 294
第15章 Iterator和for...of循環(huán) 297
15.1 Iterator(遍歷器)的概念 297
15.2 默認Iterator接口 300
15.3 調(diào)用Iterator接口的場合 305
15.4 字符串的Iterator接口 307
15.5 Iterator接口與Generator函數(shù) 308
15.6 遍歷器對象的return()、throw() 309
15.7 for...of循環(huán) 310
15.7.1 數(shù)組 310
15.7.2 Set和Map結(jié)構(gòu) 311
15.7.3 計算生成的數(shù)據(jù)結(jié)構(gòu) 312
15.7.4 類似數(shù)組的對象 313
15.7.5 對象 314
15.7.6 與其他遍歷語法的比較 315
第16章 Generator函數(shù)的語法 317
16.1 簡介 317
16.1.1 基本概念 317
16.1.2 yield表達式 319
16.1.3 與Iterator接口的關(guān)系 322
16.2 next方法的參數(shù) 323
16.3 for...of循環(huán) 325
16.4 Generator.prototype.throw() 328
16.5 Generator.prototype.return() 334
16.6 yield表達式 335
16.7 作為對象屬1
好!好好好好好好
買買買買買
還沒開始看,應(yīng)該不錯吧,看推薦的比較多。
屋里沒人,快遞員給書放門口墊子底下走了以后打電話告知。感謝當當,讓我能盡早擁有這本書。
專業(yè),實用,點贊
奉勸各位不要再來當當買書了,簡直是自掘墳?zāi)埂YI回來書是破的。人工說著說著再也找不到了,圖片發(fā)不出去…只比jd便宜幾塊錢。以前買習(xí)慣了,從今天起放棄,卸載了。
很好,很有用
五本之中有一本是舊的他 其他四本都有那種油紙包裝,這本沒有。而且前面兩頁是爛的,可以看圖
厚,干貨多多
看過電子版,覺得不錯。。
個人感覺書的排版不怎么樣,紙質(zhì)一般。不是彩色,代碼看起來不順暢。
書沒有塑料外皮,封面很灰,四角有磨碎,略有折印,里面還好
看到阮大大更新了,表示支持一下。但是排版和紙張真的很差!代碼地方無字體區(qū)分?!!紙張更是不能忍,用熒光筆一劃后面直接透過去了。
啦啦啦,前天晚上買的第二天就送到了真的快,書嘛,書店哪樣就哪樣咯
es6先學(xué)起來,絕對是未來語言啊。阮老師的作品,看了你那么久的博客,必須支持啊。
喜歡阮老師,一直看博客來著,書的質(zhì)量不錯,買來學(xué)習(xí)學(xué)習(xí)。
電子工業(yè)出版社出版的書紙質(zhì)都偏黃,內(nèi)容可以
送給朋友的,他說包裝太簡陋了,書有稍微壓壞,有褶皺
阮老師精品,必定支持!網(wǎng)上雖然有免費版,但是還是買了紙質(zhì)的。非常值得,印刷精美,手感棒極了。
還沒看,電子檔的粗看了一下,個人更喜歡紙質(zhì)書籍,順便支持下作者
es6必讀經(jīng)典,進階神器,goooooooood
有pdf版,但感覺還是實體書比較好,所以就買了一本。印刷很清晰,紙張不像其他書那么白
說好的第二天到,結(jié)果拖延了一天,這也就算了,看看這書角摔得,第一次當當買書,心涼
雖然阮大神網(wǎng)上開源的教程,但為了表示支持還是買了書。印刷質(zhì)量很好,值得擁有
喜見國人自己撰寫的好JavaScript最新標準入門書,支持中國本土IT編程書籍!
物流很快,隔天就到了,書本來就很好,印刷什么的都沒有問題,價格還可以,比其他什么東家好太多,最起碼不會發(fā)臟書給你
什么都不說 自己看吧 不要在當當買書 太不負責(zé)任了