深入理解 ES6

深入理解 ES6

作者: Nicholas C. Zakas
出版社: 電子工業
出版在: 2017-06-01
ISBN-13: 9787121317989
ISBN-10: 7121317982
裝訂格式: 平裝
總頁數: 396 頁





內容描述


ES6是迄今為止JavaScript內核首當其沖的一次重大更新。
本書是領域大家Nicholas C. Zakas撰寫的一份ES6的完整指南,書中詳細講解了ES 6在JavaScript對象類型、語法及其他方面激動人心的改變。
每一章都含有可運行於任何JavaScript環境的示例代碼,你可以利用這些代碼測試、理解ES6中的新功能。
無論你是Web開發者還是Node.js開發者,都可以通過本書來更好地理解和運用ES6,或是順利地從ES5遷移到ES6。


目錄大綱


第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 
    -- Symb ol.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陷阱

作者介紹


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。




相關書籍

Basics of Web Design: HTML5 and CSS3 (Paperback)

作者 Terry Morris Terry Felke-Morris

2017-06-01

Node.js 實戰 : 使用 Egg.js+Vue.js+Docker 構建漸進式、可持續集成與交付應用

作者 yugo

2017-06-01

Beginning JSON (Paperback)

作者 Ben Smith

2017-06-01