探索 ES6
首頁
請支持這本書:購買(PDF、EPUB、MOBI)捐款
(廣告,請不要封鎖。)

目錄

    1. 您需要了解本書的資訊
      1. 受眾:JavaScript 程式設計師
      2. 我為什麼應該閱讀這本書?
      3. 如何閱讀這本書
      4. 本書的來源
      5. 詞彙表
      6. 慣例
      7. GitHub 上的示範程式碼
      8. 側欄
      9. 腳註
    2. 前言
    3. 序言
    4. 致謝
    5. 關於作者
  1. I 背景
    1. 1. 關於 ECMAScript 6 (ES6)
      1. 1.1 TC39(Ecma 技術委員會 39)
      2. 1.2 ECMAScript 6 的設計方式
      3. 1.3 JavaScript 與 ECMAScript
      4. 1.4 升級到 ES6
      5. 1.5 ES6 的目標
      6. 1.6 ES6 功能的類別
      7. 1.7 ECMAScript 的簡史
    2. 2. 常見問題:ECMAScript 6
      1. 2.1 我現在如何使用 ES6?
      2. 2.2 ECMAScript 6 現在不叫 ECMAScript 2015 了嗎?
      3. 2.3 我如何將我的 ECMAScript 5 程式碼轉移到 ECMAScript 6?
      4. 2.4 學習 ECMAScript 5 還有意義嗎?
      5. 2.5 ES6 很臃腫嗎?
      6. 2.6 ES6 規格是不是很大?
      7. 2.7 ES6 有陣列理解嗎?
      8. 2.8 ES6 是靜態類型嗎?
    3. 3. 一個 JavaScript:避免 ECMAScript 6 中的版本控制
      1. 3.1 版本控制
      2. 3.2 嚴格模式和 ECMAScript 6
      3. 3.3 ES6 中的重大變更
      4. 3.4 結論
      5. 3.5 進一步閱讀
    4. 4. ES6 核心功能
      1. 4.1 varconst/let
      2. 4.2 從 IIFE 到區塊
      3. 4.3 從串接字串到範本字串
      4. 4.4 從函式表達式到箭頭函式
      5. 4.5 處理多個回傳值
      6. 4.6 forforEach()for-of
      7. 4.7 處理參數預設值
      8. 4.8 處理命名參數
      9. 4.9 arguments 到 rest 參數
      10. 4.10 apply() 到展開運算子 (...)
      11. 4.11 concat() 到展開運算子 (...)
      12. 4.12 從物件文字中的函式運算式到方法定義
      13. 4.13 從建構函式到類別
      14. 4.14 從自訂錯誤建構函式到 Error 的子類別
      15. 4.15 從物件到 Map
      16. 4.16 新的字串方法
      17. 4.17 新的陣列方法
      18. 4.18 從 CommonJS 模組到 ES6 模組
      19. 4.19 下一步該做什麼
  2. II 資料
    1. 5. 新的數字和 Math 功能
      1. 5.1 概觀
      2. 5.2 新的整數文字
      3. 5.3 新的靜態 Number 屬性
      4. 5.4 新的 Math 功能
      5. 5.5 常見問題:數字
    2. 6. 新的字串功能
      1. 6.1 概觀
      2. 6.2 Unicode 碼點跳脫字元
      3. 6.3 字串內插、多行字串文字和原始字串文字
      4. 6.4 迭代字串
      5. 6.5 碼點的數字值
      6. 6.6 檢查是否包含
      7. 6.7 重複字串
      8. 6.8 將正規表示式工作委派給其參數的字串方法
      9. 6.9 參考:新的字串方法
    3. 7. 符號
      1. 7.1 概觀
      2. 7.2 一種新的原始類型
      3. 7.3 使用符號表示概念
      4. 7.4 符號作為屬性的金鑰
      5. 7.5 將符號轉換為其他原始類型
      6. 7.6 符號的包裝物件
      7. 7.7 使用符號跨越領域
      8. 7.8 常見問題:符號
      9. 7.9 已知符號的拼寫:為什麼是 Symbol.iterator 而不是 Symbol.ITERATOR(等)?
      10. 7.10 符號 API
    4. 8. 樣板字串
      1. 8.1 概觀
      2. 8.2 簡介
      3. 8.3 標記範本字串的範例
      4. 8.4 實作標籤函式
      5. 8.5 常見問題:範本字串和標記範本字串
    5. 9. 變數和範圍
      1. 9.1 概觀
      2. 9.2 透過 letconst 進行區塊範圍
      3. 9.3 const 建立不可變的變數
      4. 9.4 暫時性死區
      5. 9.5 迴圈標頭中的 letconst
      6. 9.6 參數作為變數
      7. 9.7 全域物件
      8. 9.8 函式宣告和類別宣告
      9. 9.9 編碼風格:constletvar
    6. 10. 解構
      1. 10.1 概觀
      2. 10.2 背景:建立資料與萃取資料
      3. 10.3 解構的模式
      4. 10.4 模式如何存取值中的內部資料?
      5. 10.5 預設值
      6. 10.6 更多物件解構功能
      7. 10.7 更多陣列解構功能
      8. 10.8 您可以指定給不只是變數
      9. 10.9 解構的陷阱
      10. 10.10 解構範例
      11. 10.11 解構演算法
    7. 11. 參數處理
      1. 11.1 概觀
      2. 11.2 參數處理作為解構
      3. 11.3 參數預設值
      4. 11.4 剩餘參數
      5. 11.5 模擬命名參數
      6. 11.6 參數處理中解構的範例
      7. 11.7 編碼風格提示
      8. 11.8 散佈運算子 (...)
  3. III 模組化
    1. 12. ECMAScript 6 中的可呼叫實體
      1. 12.1 概觀
      2. 12.2 在 ES6 中呼叫的方式
      3. 12.3 使用可呼叫實體的建議
      4. 12.4 ES6 可呼叫實體的詳細資訊
      5. 12.5 ES5 和 ES6 中的派送和直接方法呼叫
      6. 12.6 函式的 name 屬性
      7. 12.7 常見問題:可呼叫實體
    2. 13. 箭頭函式
      1. 13.1 概觀
      2. 13.2 傳統函式由於 this 而成為不良的非方法函式
      3. 13.3 箭頭函式語法
      4. 13.4 詞彙變數
      5. 13.5 語法陷阱
      6. 13.6 立即呼叫的箭頭函式
      7. 13.7 箭頭函式與 bind()
      8. 13.8 箭頭函式與一般函式
      9. 13.9 常見問題:箭頭函式
    3. 14. 除了類別之外的新 OOP 功能
      1. 14.1 概觀
      2. 14.2 物件文字的新功能
      3. 14.3 Object 的新方法
      4. 14.4 ES6 中的屬性遍歷
      5. 14.5 指定與定義屬性
      6. 14.6 ECMAScript 6 中的 __proto__
      7. 14.7 ECMAScript 6 中的可列舉性
      8. 14.8 透過廣為人知的符號自訂基礎語言運算
      9. 14.9 常見問題:物件文字
    4. 15. 類別
      1. 15.1 概觀
      2. 15.2 基本要點
      3. 15.3 類別的私有資料
      4. 15.4 簡單的混入
      5. 15.5 類別的詳細資訊
      6. 15.6 子類別的詳細資訊
      7. 15.7 種類模式
      8. 15.8 類別的優缺點
      9. 15.9 常見問題:類別
      10. 15.10 類別的下一步是什麼?
      11. 15.11 延伸閱讀
    5. 16. 模組
      1. 16.1 概觀
      2. 16.2 JavaScript 中的模組
      3. 16.3 ES6 模組基礎
      4. 16.4 詳細的匯入和匯出
      5. 16.5 ECMAScript 6 模組載入器 API
      6. 16.6 在瀏覽器中使用 ES6 模組
      7. 16.7 詳細資料:匯入為匯出的檢視
      8. 16.8 ES6 模組的設計目標
      9. 16.9 常見問題:模組
      10. 16.10 ECMAScript 6 模組的優點
      11. 16.11 延伸讀物
  4. IV 集合
    1. 17. for-of 迴圈
      1. 17.1 概觀
      2. 17.2 介紹 for-of 迴圈
      3. 17.3 陷阱:for-of 僅適用於可迭代值
      4. 17.4 迭代變數:const 宣告與 var 宣告
      5. 17.5 使用現有變數、物件屬性與陣列元素進行迭代
      6. 17.6 使用解構模式進行迭代
    2. 18. 新的陣列功能
      1. 18.1 概觀
      2. 18.2 新的靜態 Array 方法
      3. 18.3 新的 Array.prototype 方法
      4. 18.4 ES6 和陣列中的洞
      5. 18.5 設定哪些物件會被 concat() 散佈(Symbol.isConcatSpreadable
      6. 18.6 陣列索引的數字範圍
    3. 19. Map 和 Set
      1. 19.1 概觀
      2. 19.2 Map
      3. 19.3 WeakMap
      4. 19.4 Set
      5. 19.5 WeakSet
      6. 19.6 常見問題:Map 和 Set
    4. 20. 型別化陣列
      1. 20.1 概觀
      2. 20.2 簡介
      3. 20.3 ArrayBuffer
      4. 20.4 型別化陣列
      5. 20.5 DataView
      6. 20.6 支援型別化陣列的瀏覽器 API
      7. 20.7 延伸範例:JPEG SOF0 解碼器
      8. 20.8 可用性
    5. 21. 可迭代物件和迭代器
      1. 21.1 概觀
      2. 21.2 可迭代性
      3. 21.3 可迭代資料來源
      4. 21.4 迭代語言建構
      5. 21.5 實作可迭代物件
      6. 21.6 更多可迭代物件範例
      7. 21.7 常見問題:可迭代物件與迭代器
      8. 21.8 深入探討 ECMAScript 6 迭代協定
    6. 22. 產生器
      1. 22.1 概觀
      2. 22.2 什麼是產生器?
      3. 22.3 產生器作為迭代器(資料產生)
      4. 22.4 產生器作為觀察者(資料消耗)
      5. 22.5 產生器作為協同程序(合作式多工處理)
      6. 22.6 產生器範例
      7. 22.7 迭代 API 中的繼承(包括產生器)
      8. 22.8 樣式考量:星號前後的空白
      9. 22.9 常見問題:產生器
      10. 22.10 結論
      11. 22.11 延伸讀物
  5. V 標準函式庫
    1. 23. 新的正規表示式功能
      1. 23.1 概觀
      2. 23.2 新旗標 /y(黏著)
      3. 23.3 新旗標 /u(Unicode)
      4. 23.4 新資料屬性 flags
      5. 23.5 RegExp() 可用作複製建構函式
      6. 23.6 委派給正規表示式方法的字串方法
    2. 24. 非同步程式設計(背景)
      1. 24.1 JavaScript 呼叫堆疊
      2. 24.2 瀏覽器事件迴圈
      3. 24.3 非同步接收結果
      4. 24.4 展望未來
      5. 24.5 延伸讀物
    3. 25. 非同步程式設計的 Promise
      1. 25.1 概觀
      2. 25.2 簡介:Promise
      3. 25.3 第一個範例
      4. 25.4 了解 Promise 的三種方法
      5. 25.5 建立和使用 Promise
      6. 25.6 範例
      7. 25.7 建立 Promise 的其他方法
      8. 25.8 串接 Promise
      9. 25.9 常見的 Promise 串接錯誤
      10. 25.10 錯誤處理的秘訣
      11. 25.11 撰寫 Promise
      12. 25.12 兩個有用的額外 Promise 方法
      13. 25.13 Node.js:將基於回呼的同步函數與 Promise 搭配使用
      14. 25.14 相容於 ES6 的 Promise 函式庫
      15. 25.15 下一步:透過產生器使用 Promise
      16. 25.16 深入了解 Promise:一個簡單的實作
      17. 25.17 Promise 的優點和限制
      18. 25.18 參考:ECMAScript 6 Promise API
      19. 25.19 延伸閱讀
  6. VI 其他
    1. 26. ES6 中的 Unicode
      1. 26.1 ES6 中有更好的 Unicode 支援
      2. 26.2 ES6 中的跳脫序列
    2. 27. 尾呼叫最佳化
      1. 27.1 什麼是尾呼叫最佳化?
      2. 27.2 檢查函數呼叫是否位於尾部位置
      3. 27.3 尾遞迴函數
    3. 28. 使用代理進行元程式設計
      1. 28.1 概觀
      2. 28.2 程式設計與元程式設計
      3. 28.3 代理說明
      4. 28.4 代理的用例
      5. 28.5 代理 API 的設計
      6. 28.6 常見問題:代理
      7. 28.7 參考:代理 API
      8. 28.8 結論
      9. 28.9 延伸閱讀
    4. 29. ECMAScript 6 的程式設計風格秘訣
    5. 30. ES6 中新功能的概觀
      1. 30.1 ES6 功能類別
      2. 30.2 新的數字和 Math 功能
      3. 30.3 新的字串功能
      4. 30.4 符號
      5. 30.5 範本字面值
      6. 30.6 變數和範圍
      7. 30.7 解構
      8. 30.8 參數處理
      9. 30.9 ECMAScript 6 中的可呼叫實體
      10. 30.10 箭頭函數
      11. 30.11 除了類別之外的新 OOP 功能
      12. 30.12 類別
      13. 30.13 模組
      14. 30.14 for-of 迴圈
      15. 30.15 新陣列功能
      16. 30.16 映射和集合
      17. 30.17 類型化陣列
      18. 30.18 可迭代物件和迭代器
      19. 30.19 產生器
      20. 30.20 新的正規表示式功能
      21. 30.21 非同步程式設計的 Promise
      22. 30.22 使用代理的元程式設計
  7. 註解
© 2015 - 2018 Axel Rauschmayer(封面由 Fran Caye 設計)
這本書獻給那個不可能的女孩,她教會我許多關於愛與人生的事。