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

探索 ES2016 和 ES2017

目錄

    1. 您需要了解的關於本書的資訊
      1. 支援
    2. 關於作者
  1. I 背景
    1. 1. ECMAScript 功能的 TC39 流程
      1. 1.1 誰設計 ECMAScript?
      2. 1.2 ECMAScript 如何設計?
        1. 1.2.1 問題:ECMAScript 2015 (ES6) 的版本太大
        2. 1.2.2 解決方案:TC39 流程
      3. 1.3 不要稱它們為 ECMAScript 20xx 功能
      4. 1.4 進一步閱讀
    2. 2. 常見問答:ES2016 和 ES2017
      1. 2.1 ECMAScript 2016 是不是太小了?
  2. II ECMAScript 2016
    1. 3. Array.prototype.includes
      1. 3.1 概觀
      2. 3.2 陣列方法 includes
      3. 3.3 常見問答
      4. 3.4 進一步閱讀
    2. 4. 指數運算子 (**)
      1. 4.1 概觀
      2. 4.2 指數運算的中綴運算子
      3. 4.3 範例
      4. 4.4 優先順序
      5. 4.5 進一步閱讀
  3. III ECMAScript 2017
    1. 5. 非同步函式
      1. 5.1 概觀
        1. 5.1.1 變體
        2. 5.1.2 非同步函式總是傳回 Promise
        3. 5.1.3 透過 await 處理非同步運算的結果和錯誤
      2. 5.2 了解非同步函式
        1. 5.2.1 透過產生器撰寫非同步程式碼
        2. 5.2.2 透過非同步函式撰寫非同步程式碼
        3. 5.2.3 非同步函式同步啟動,非同步完成
        4. 5.2.4 傳回的 Promise 沒有包裝
      3. 5.3 使用 await 的秘訣
        1. 5.3.1 不要忘記 await
        2. 5.3.2 如果您「發射後不管」,就不需要 await
        3. 5.3.3 await 是順序的,Promise.all() 是並行的
      4. 5.4 非同步函式和回呼函式
        1. 5.4.1 Array.prototype.map()
        2. 5.4.2 Array.prototype.forEach()
      5. 5.5 使用非同步函式的提示
        1. 5.5.1 了解 Promise
        2. 5.5.2 立即呼叫的非同步函式表達式
        3. 5.5.3 使用非同步函式進行單元測試
        4. 5.5.4 別擔心未處理的拒絕
      6. 5.6 延伸閱讀
    2. 6. 共用記憶體和原子操作
      1. 6.1 平行處理與並行運算
        1. 6.1.1 平行處理模型
      2. 6.2 JS 平行處理的歷史
        1. 6.2.1 下一步:SharedArrayBuffer
      3. 6.3 共用陣列緩衝區
        1. 6.3.1 建立並傳送共用陣列緩衝區
        2. 6.3.2 接收共用陣列緩衝區
      4. 6.4 原子操作:安全地存取共用資料
        1. 6.4.1 問題:最佳化會讓不同工作執行緒的程式碼難以預測
        2. 6.4.2 解決方案:原子操作
        3. 6.4.3 問題:分割值
      5. 6.5 共用陣列緩衝區的用途
        1. 6.5.1 共用陣列緩衝區和 JavaScript 的執行完成語意
        2. 6.5.2 共用陣列緩衝區和 asm.js 與 WebAssembly
        3. 6.5.3 共用整數以外的資料
        4. 6.5.4 使用共用陣列緩衝區的程式碼快多少?
      6. 6.6 範例
        1. 6.6.1 使用共用鎖
        2. 6.6.2 實作共用鎖
        3. 6.6.3 範例結論
      7. 6.7 共用記憶體和原子操作的 API
        1. 6.7.1 SharedArrayBuffer
        2. 6.7.2 Atomics
      8. 6.8 常見問題
        1. 6.8.1 哪些瀏覽器支援共用陣列緩衝區?
      9. 6.9 延伸閱讀
    3. 7. Object.entries()Object.values()
      1. 7.1 概述
        1. 7.1.1 Object.entries()
        2. 7.1.2 Object.values()
      2. 7.2 Object.entries()
        1. 7.2.1 透過 Object.entries() 設定地圖
        2. 7.2.2 常見問題:Object.entries()
      3. 7.3 Object.values()
    4. 8. 新的字串方法:padStartpadEnd
      1. 8.1 概述
      2. 8.2 為何要填補字串?
      3. 8.3 String.prototype.padStart(maxLength, fillString=' ')
        1. 8.3.1 padStart() 的簡單實作
      4. 8.4 String.prototype.padEnd(maxLength, fillString=' ')
      5. 8.5 常見問題:padStartpadEnd
        1. 8.5.1 為何填補方法不稱為 padLeftpadRight
    5. 9. Object.getOwnPropertyDescriptors()
      1. 9.1 概述
      2. 9.2 Object.getOwnPropertyDescriptors()
      3. 9.3 Object.getOwnPropertyDescriptors() 的使用案例
        1. 9.3.1 使用案例:將屬性複製到物件中
        2. 9.3.2 使用案例:複製物件
        3. 9.3.3 使用案例:具有任意原型的跨平台物件文字
      4. 9.4 陷阱:複製使用 super 的方法
    6. 10. 函式參數清單和呼叫中的尾隨逗號
      1. 10.1 概述
      2. 10.2 物件文字和陣列文字中的尾隨逗號
      3. 10.3 功能:允許在參數定義和函式呼叫中使用尾隨逗號
© 2016 - 2018 Axel Rauschmayer