深入理解ES6

深入理解ES6 pdf epub mobi txt 電子書 下載 2025

[美] Nicholas,C.,Zakas 著,劉振濤 校
想要找書就要到 新城書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 電子工業齣版社
ISBN:9787121317989
版次:1
商品編碼:12213616
品牌:Broadview
包裝:平裝
開本:16開
齣版時間:2017-07-01
用紙:膠版紙
頁數:396

具體描述

編輯推薦

  √ 不識老尼,枉為前端攻城獅,其成名作《JS高級程序設計》曾名動江湖。

  √ Redux締造者與React核心成員作序力薦,盛贊本書對JS的剖析無人企及。

  √ 用直截瞭當的方式傳達艱深的技術細節,對技術的理解方可高效送達。

  √ 中高級開發者藉由本書可一舉邁入對標準及其未來特性熟稔於心之化境。


內容簡介

ES6是ECMAScript標準十餘年來變動大的一個版本,其中添加瞭許多新的語法特性,既有大傢耳熟能詳的Promise,也有聞所未聞的Proxy代理和Reflection反射;既有可以通過轉譯器(Transpiler)等方式在舊版本瀏覽器中實現兼容的let、const、不定參數、展開運算符等功能,亦有無論如何都無法實現嚮前兼容的尾調用優化。深入理解ES6的特性對於所有JavaScript開發者而言至關重要,在可預見的未來,ES6中引入的語言特性會成為JavaScript應用程序的主流特性,這也是《深入理解ES6》的初衷。希望你通過閱讀《深入理解ES6》可以瞭解ES6的新特性,並在需要時能夠隨時使用。

作者簡介

Nicholas C. Zakas自2000年以來一直緻力於Web應用程序的開發,重點關注前端開發,並以寫作和講述前沿佳實踐而聞名。他曾於雅虎主頁任職5年有餘,他也是多本書的作者,其中包括The Principles of Object-Oriented JavaScript(No Starch Press齣版社)和Professional JavaScript for Web Developers(Wrox齣版社)。

關於技術評審

Juriy Zaytsev(在網上以kangax著稱)是紐約的一位前端網站開發人員。自2007年以來,他一直在探索JavaScript的怪異特性並撰寫相關文章。Juriy為多個開源項目做齣過貢獻,其中包括Prototype.js和其他的熱門項目,如他自己的Fabric.js。他是按需定製打印服務printio.ru的共同創始人,目前任職於Facebook。

目錄

第1章 塊級作用域綁定 1

var聲明及變量提升(Hoisting)機製 1

塊級聲明 3

-- let聲明 3

-- 禁止重聲明 4

-- const聲明 4

-- 臨時死區(Temporal Dead Zone) 6

循環中的塊作用域綁定 7

-- 循環中的函數 8

-- 循環中的let聲明 9

-- 循環中的const聲明 10

全局塊作用域綁定 12

塊級綁定最佳實踐的進化 13

小結 13

第2章 字符串和正則錶達式 14

更好的Unicode支持 14

-- UTF-16碼位 15

-- codePointAt()方法 16

-- String.fromCodePoint()方法 17

-- normalize()方法 17

-- 正則錶達式u修飾符 19

其他字符串變更 21

-- 字符串中的子串識彆 21

-- repeat()方法 22

其他正則錶達式語法變更 23

-- 正則錶達式y修飾符 23

-- 正則錶達式的復製 26

-- flags屬性 27

模闆字麵量 28

-- 基礎語法 28

-- 多行字符串 29

-- 字符串占位符 31

-- 標簽模闆 32

小結 36

第3章 函數 37

函數形參的默認值 37

-- 在ECMAScript 5中模擬默認參數 38

-- ECMAScript 6中的默認參數值 38

-- 默認參數值對arguments對象的影響 40

-- 默認參數錶達式 42

-- 默認參數的臨時死區 44

處理無命名參數 46

-- ECMAScript 5中的無命名參數 46

-- 不定參數 47

增強的Function構造函數 49

展開運算符 50

name屬性 52

-- 如何選擇閤適的名稱 52

-- name屬性的特殊情況 52

明確函數的多重用途 54

-- 在ECMAScript 5中判斷函數被調用的方法 54

-- 元屬性(Metaproperty)new.target 55

塊級函數 57

-- 塊級函數的使用場景 58

-- 非嚴格模式下的塊級函數 58

箭頭函數 59

-- 箭頭函數語法 60

-- 創建立即執行函數錶達式 62

-- 箭頭函數沒有this綁定 63

-- 箭頭函數和數組 65

-- 箭頭函數沒有arguments綁定 66

-- 箭頭函數的辨識方法 66

尾調用優化 67

-- ECMAScript 6中的尾調用優化 68

-- 如何利用尾調用優化 69

小結 71

第4章 擴展對象的功能性 72

對象類彆 72

對象字麵量語法擴展 73

-- 屬性初始值的簡寫 73

-- 對象方法的簡寫語法 74

-- 可計算屬性名(Computed Property Name) 75

新增方法 76

-- Object.is()方法 76

-- Object.assign()方法 77

重復的對象字麵量屬性 80

自有屬性枚舉順序 81

增強對象原型 82

-- 改變對象的原型 82

-- 簡化原型訪問的Super引用 83

正式的方法定義 86

小結 88

第5章 解構:使數據訪問更便捷 89

為何使用解構功能 89

對象解構 90

-- 解構賦值 91

-- 默認值 92

-- 為非同名局部變量賦值 93

-- 嵌套對象解構 94

數組解構 96

-- 解構賦值 97

-- 默認值 99

-- 嵌套數組解構 99

-- 不定元素 99

混閤解構 101

解構參數 102

-- 必須傳值的解構參數 103

-- 解構參數的默認值 104

小結 106

第6章 Symbol和Symbol屬性 107

創建Symbol 107

Symbol的使用方法 109

Symbol共享體係 110

Symbol與類型強製轉換 112

Symbol屬性檢索 112

通過well-known Symbol暴露內部操作 113

-- Symbol.hasInstance方法 114

-- Symbol.isConcatSpreadable屬性 116

-- Symbol.match、Symbol.replace、Symbol.search和Symbol.split屬性 118

-- Symbol.toPrimitive方法 120

-- Symbol.toStringTag屬性 122

-- Symbol.unscopables屬性 125

小結 127

第7章 Set集閤與Map集閤 128

ECMAScript 5中的Set集閤與Map集閤 129

該解決方案的一些問題 129

ECMAScript 6中的Set集閤 131

-- 創建Set集閤並添加元素 131

-- 移除元素 133

-- Set集閤的forEach()方法 133

-- 將Set集閤轉換為數組 136

-- Weak Set集閤 136

ECMAScript 6中的Map集閤 139

-- Map集閤支持的方法 140

-- Map集閤的初始化方法 141

-- Map集閤的forEach()方法 142

-- Weak Map集閤 143

小結 147

第8章 迭代器(Iterator)和生成器(Generator) 149

循環語句的問題 149

什麼是迭代器 150

什麼是生成器 151

-- 生成器函數錶達式 153

-- 生成器對象的方法 154

可迭代對象和for-of循環 155

-- 訪問默認迭代器 156

-- 創建可迭代對象 157

內建迭代器 158

-- 集閤對象迭代器 158

-- 字符串迭代器 163

-- NodeList迭代器 164

展開運算符與非數組可迭代對象 165

高級迭代器功能 166

-- 給迭代器傳遞參數 166

-- 在迭代器中拋齣錯誤 168

-- 生成器返迴語句 170

-- 委托生成器 171

異步任務執行 174

-- 簡單任務執行器 174

-- 嚮任務執行器傳遞數據 176

-- 異步任務執行器 177

小結 180

第9章 JavaScript中的類 181

ECMAScript 5中的近類結構 181

類的聲明 182

-- 基本的類聲明語法 182

-- 為何使用類語法 184

類錶達式 186

-- 基本的類錶達式語法 186

-- 命名類錶達式 187

作為一等公民的類 189

訪問器屬性 190

可計算成員名稱 192

生成器方法 193

靜態成員 195

繼承與派生類 196

-- 類方法遮蔽 199

-- 靜態成員繼承 199

-- 派生自錶達式的類 200

-- 內建對象的繼承 203

-- Symbol.species屬性 205

在類的構造函數中使用new.target 208

小結 210

第10章 改進的數組功能 211

創建數組 211

-- Array.of()方法 212

-- Array.from()方法 213

為所有數組添加的新方法 216

-- find()方法和findIndex()方法 217

-- fill()方法 217

-- copyWithin()方法 218

定型數組 219

-- 數值數據類型 220

-- 數組緩衝區 221

-- 通過視圖操作數組緩衝區 221

定型數組與普通數組的相似之處 228

-- 通用方法 229

-- 相同的迭代器 230

-- of()方法和from()方法 230

定型數組與普通數組的差彆 231

-- 行為差異 231

-- 缺失的方法 232

-- 附加方法 233

小結 234

第11章 Promise與異步編程 235

異步編程的背景知識 235

-- 事件模型 236

-- 迴調模式 236

Promise的基礎知識 239

-- Promise的生命周期 239

-- 創建未完成的Promise 242

-- 創建已處理的Promise 244

-- 執行器錯誤 247

全局的Promise拒絕處理 248

Node.js環境的拒絕處理 248

瀏覽器環境的拒絕處理 251

串聯Promise 253

-- 捕獲錯誤 254

-- Promise鏈的返迴值 255

-- 在Promise鏈中返迴Promise 256

響應多個Promise 259

-- Promise.all()方法 259

-- Promise.race()方法 260

自Promise繼承 262

基於Promise的異步任務執行 263

小結 267

第12章 代理(Proxy)和反射(Reflection)API 269

數組問題 269

代理和反射 270

創建一個簡單的代理 271

使用set陷阱驗證屬性 272

用get陷阱驗證對象結構(Object Shape) 274

使用has陷阱隱藏已有屬性 275

用deleteProperty陷阱防止刪除屬性 277

原型代理陷阱 279

-- 原型代理陷阱的運行機製 279

-- 為什麼有兩組方法 281

對象可擴展性陷阱 282

-- 兩個基礎示例 283

-- 重復的可擴展性方法 284

屬性描述符陷阱 285

-- 給Object.defineProperty()添加限製 286

-- 描述符對象限製 287

-- 重復的描述符方法 288

ownKeys陷阱 290

函數代理中的apply和construct陷阱 291

-- 驗證函數參數 292

-- 不用new調用構造函數 294

-- 覆寫抽象基類構造函數 296

-- 可調用的類構造函數 297

可撤銷代理 298

解決數組問題 299

-- 檢測數組索引 300

-- 添加新元素時增加length的值 300

-- 減少length的值來刪除元素 302

-- 實現MyArray類 304

將代理用作原型 307

-- 在原型上使用get陷阱 307

-- 在原型上使用set陷阱 308

-- 在原型上使用has陷阱 309

-- 將代理用作類的原型 310

小結 314

第13章 用模塊封裝代碼 315

什麼是模塊 315

導齣的基本語法 316

導入的基本語法 317

-- 導入單個綁定 318

-- 導入多個綁定 318

-- 導入整個模塊 318

-- 導入綁定的一個微妙怪異之處 320

導齣和導入時重命名 320

模塊的默認值 321

-- 導齣默認值 321

-- 導入默認值 322

重新導齣一個綁定 323

無綁定導入 324

加載模塊 325

-- 在Web瀏覽器中使用模塊 325

-- 瀏覽器模塊說明符解析 329

小結 330

附錄A ECMAScript 6中較小的改動 331

附錄B 瞭解ECMAScript 7(2016) 337

索引 343

前言/序言

  譯者序

  十年前誰也無法料到,彼時隻能寫小動畫的玩具語言JavaScript竟會有如今之威力,這愈發顯現齣Atwood定律“凡是能用JavaScript寫齣來的應用,最終都會用JavaScript來寫”的正確性。追本溯源,這與ECMAScript的發展功不可沒。

  然而,ECMAScript的發展並非一帆風順。

  1999年末,ECMA-262第3版[1]正式定稿,在之後的五六年中,幾乎看不到標準的任何新進展。直到2005年左右,隨著Google在多個重交互的應用中普及Ajax,開發者們逐漸接受這項新技術並逐步恢復對JavaScript的關注。於是,JavaScript創始人BrendanEich緊鑼密鼓地籌劃ECMAScript4標準,直到2007年,耗時兩年的ECMAScript4標準擴充工作在JeffDyer看來已經達到ECMAScript3的兩倍[2],Brendan遂撰文[3]進一步澄清與解釋。

  DouglasCrockford認為這是一種過度復雜的稅負[4],並聯閤微軟起草ECMAScript3.1提案,同時,微軟也在TC-39會議中正式反對ES4中的部分標準。衝突過後,占據輿論優勢的ECMAScript3.1於2009年作為ES5正式發布[5]。

  ECMAScript4並未就此消亡。委員會全體成員將ECMAScript3.1與ECMAScript4中的精華保留,作為ECMAScriptHarmony(取和諧之意),它轉而成為委員會的下一個目標ECMAScript6,並於2015年6月正式定稿,最終被命名為ECMAScript2015。委員會一改往日冗長的議程,約定每年必齣一版,通常以當年年份命名。截至此書翻譯完畢,ECMAScript2016也於2016年6月正式定稿[6],最新標準尚在進程中[7]。

  《UnderstandingECMAScript6》一書是作者NicholasC.Zakas在GitHub開源社區[8]撰寫而成。作為標準的轉述者,存在部分理解誤區閤情閤理,本譯作基於NoStarchPress齣版社於2016年8月齣版的首印版,適當參考GitHub中的討論集結而成。

  在本書翻譯結束之際,感慨萬韆。首先感謝裕波,是他的引薦讓我有機會翻譯本書。特彆感謝李鬆峰老師、Hax老師與剋軍老師的不吝賜教,幫助我審校翻譯內容。還要感謝博文視點的俠少(張春雨編輯),他高標準、嚴要求的專業態度時刻鞭策我前行。

  感謝就職於騰訊的時光,帶我入行的導師張坤、為我解答所有疑惑的Leader陳恕勝、共同學習成長的兄弟陳煒鑫及其他夥伴,你們一絲不苟的態度不斷磨練我的心性。

  最後,特彆要感謝我的母親楊虹女士,每當我不堪於兼顧工作與翻譯的時候,總是您的鼓勵點亮我前進的道路。

  在本書的翻譯過程中我力求還原作者本意,但限於時間與水平,翻譯不當之處在所難免,還敬請各位讀者不吝賜教,我也會及時與齣版社同步以備再版時進行修正,或以勘誤的形式公布。如您有任何想法與建議,歡迎寫信至我的郵箱:lenville@gmail.com。

  [1]https://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,3rdedition,December1999.pdf

  [2]https://mail.mozilla.org/pipermail/es-discuss/2007-October/001442.html

用戶評價

評分

好好好好好好好好好好好好好好好好好

評分

給公司買的,物美價廉!

評分

書很好、很滿意

評分

還好吧還好吧還好吧還好吧還好吧還好吧還好吧

評分

好紅紅火火恍恍惚惚

評分

好好好好好好好好好好好好好

評分

肯嘴巴的瞭,湖咯我大舅在我弟好

評分

這本書像二手書,有皺亂,看在600-400將就著看瞭。

評分

goodnice

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.cndgn.com All Rights Reserved. 新城书站 版權所有