産品特色
編輯推薦
√2015年6月新發布的標準,被全球IT企業及前端開發者廣泛擁護、支持。
√由知名博主、前端新知布道者阮一峰老師執筆。
√本書緊跟業界實踐,透徹解讀新增特性、語法,代碼示例簡潔易用。
√把握趨勢,覆蓋ES7,指導JavaScript開發者提升功力,瞭解語言發展動嚮。
內容簡介
ES6(又名 ES2105)是 JavaScript 語言的新標準,2015 年 6 月正式發布後,得到瞭迅速推廣,是目前業界超級活躍的計算機語言。《ES6標準入門(第2版)》是國內僅有的一本 ES6 教程,在前版基礎上增補瞭大量內容——對標準進行瞭徹底的解讀,所有新增的語法知識(包括即將發布的 ES7)都給予瞭詳細介紹,並且緊扣業界開發實踐,給齣瞭大量簡潔易懂、可以即學即用的示例代碼。
《ES6標準入門(第2版)》為中級難度,適閤對 JavaScript 語言或 ES5 已經有所瞭解的讀者,用來提高水平,瞭解這門語言的新發展;也可當作參考手冊,查尋 ES6/ES7 新增的語法點。
作者簡介
阮一峰,著名技術博客作者,JavaScript專傢。專注於網站開發技術,超過十年。暢銷書《黑客與畫傢》《軟件隨想錄》的譯者。
目錄
第1章 ECMAScript 6 簡介 0011.1 ECMAScript 和 JavaScript 的關係0011.2 ECMAScript 的曆史 0011.3 部署進度 0021.4 Babel 轉碼器 003命令行環境 004瀏覽器環境 005Node.js 環境 005在綫轉換 0061.5 Traceur 轉碼器 006直接插入網頁 006在綫轉換 007命令行轉換 008Node.js 環境的用法 0081.6 ECMAScript 7 009第2章 let 和 const 命令 0102.1 let 命令 010基本用法 010不存在變量提升 011暫時性死區 011不允許重復聲明 0122.2 塊級作用域 013為什麼需要塊級作用域 013ES6 的塊級作用域 0132.3 const 命令 0152.4 跨模塊常量 0162.5 全局對象的屬性 017第3章 變量的解構賦值 0183.1 數組的解構賦值 018基本用法 018默認值 0203.2 對象的解構賦值 0213.3 字符串的解構賦值 0243.4 數值和布爾值的解構賦值 0243.5 函數參數的解構賦值 0243.6 圓括號問題 025不能使用圓括號的情況 025可以使用圓括號的情況 0263.7 用途 026第4章 字符串的擴展 0294.1 字符的 Unicode 錶示法 0294.2 codePointAt() 0304.3 String.fromCodePoint() 0314.4 字符串的遍曆器接口 0314.5 at() 0324.6 normalize() 0324.7 includes(),startsWith(),endsWith() 0334.8 repeat() 033目錄XII目錄4.9 padStart(),padEnd() 0344.10 模闆字符串 0344.11 實例:模闆編譯 0374.12 標簽模闆 0384.13 String.raw() 042第5章 正則的擴展 0435.1 RegExp 構造函數 0435.2 字符串的正則方法 0435.3 u 修飾符 0435.4 y 修飾符 0455.5 sticky 屬性 0475.6 flags 屬性 0485.7 RegExp.escape() 048第6章 數值的擴展 0496.1 二進製和八進製數值錶示法 0496.2 Number.isFinite(), Number.isNaN() 0496.3 Number.parseInt(), Number.parseFloat() 0516.4 Number.isInteger() 0516.5 Number.EPSILON 0516.6 安全整數和 Number.isSafeInteger()0526.7 Math 對象的擴展 054Math.trunc() 054Math.sign() 054Math.cbrt() 055Math.clz32() 055Math.imul() 056Math.fround() 056Math.hypot() 057對數方法 057三角函數方法 0586.8 指數運算符 058第7章 數組的擴展 0597.1 Array.from() 0597.2 Array.of() 0617.3 數組實例的 copyWithin() 0627.4 數組實例的 find() 和 findIndex()0637.5 數組實例的 fill() 0637.6 數組實例的 entries()、keys() 和values() 0647.7 數組實例的 includes() 0647.8 數組的空位 0657.9 數組推導 067第8章 函數的擴展 0698.1 函數參數的默認值 069基本用法 069與解構賦值默認值結閤使用 070參數默認值的位置 071函數的 length 屬性 072作用域 073應用 0748.2 rest 參數 0748.3 擴展運算符 075含義 075替代數組的 apply 方法 076擴展運算符的應用 0778.4 name 屬性 0798.5 箭頭函數 080基本用法 080使用注意點 081嵌套的箭頭函數 0838.6 函數綁定 0848.7 尾調用優化 085什麼是尾調用 085尾調用優化 086XIII目錄尾遞歸 087遞歸函數的改寫 0888.8 函數參數的尾逗號 089第9章 對象的擴展 0909.1 屬性的簡潔錶示法 0909.2 屬性名錶達式 0929.3 方法的 name 屬性 0939.4 Object.is() 0949.5 Object.assign() 0959.6 屬性的可枚舉性 0979.7 屬性的遍曆 0989.8 __proto__ 屬性, Object.setPrototypeOf(),Object.getPrototypeOf() 0999.9 對象的擴展運算符 101第 10 章 Symbol 10310.1 概述 10310.2 作為屬性名的 Symbol 10510.3 實例:消除魔術字符串 10610.4 屬性名的遍曆 10710.5 Symbol.for(),Symbol.keyFor() 10910.6 內置的 Symbol 值 110Symbol.hasInstance 110Symbol.isConcatSpreadable 110Symbol.species 111Symbol.match 111Symbol.replace 112Symbol.search 112Symbol.split 112Symbol.iterator 112Symbol.toPrimitive 113Symbol.toStringTag 113Symbol.unscopables 114第 11 章 Proxy 和 Reflect 11611.1 Proxy 概述 11611.2 Proxy 實例的方法 119get() 119set() 121apply() 122has() 123construct() 123deleteProperty() 124defineProperty() 125enumerate() 125getOwnPropertyDescriptor() 126getPrototypeOf() 126isExtensible() 127ownKeys() 127preventExtensions() 128setPrototypeOf() 12811.3 Proxy.revocable() 12911.4 Reflect 概述 12911.5 Reflect 對象的方法 130第 12 章 二進製數組 13312.1 ArrayBuffer 對象 134概述 134ArrayBuffer.prototype.byteLength 135ArrayBuffer.prototype.slice() 135ArrayBuffer.isView() 13612.2 TypedArray 視圖 136概述 136構造函數 136數組方法 138字節序 140BYTES_PER_ELEMENT 屬性 141ArrayBuffer 與字符串的互相轉換 142溢齣 142XIV目錄TypedArray.prototype.buffer 143TypedArray.prototype.byteLength,TypedArray.prototype.byteOffset 143TypedArray.prototype.length 143TypedArray.prototype.set() 144TypedArray.prototype.subarray() 144TypedArray.prototype.slice() 144TypedArray.of() 144TypedArray.from() 14512.3 復閤視圖 14512.4 DataView 視圖 14612.5 二進製數組的應用 148AJAX 148Canvas 148WebSocket 149Fetch API 149File API 149第 13 章 Set 和 Map 數據結構 15113.1 Set 151基本用法 151Set 實例的屬性和方法 152遍曆操作 15313.2 WeakSet 15513.3 Map 157Map 結構的目的和基本用法 157實例的屬性和操作方法 159遍曆方法 160與其他數據結構的互相轉換 16213.4 WeakMap 164第 14 章 Iterator 和 for...of 循環 16614.1 Iterator 的概念 16614.2 數據結構的默認 Iterator 接口 16814.3 調用 Iterator 接口的場閤 17214.4 字符串的 Iterator 接口 17314.5 Iterator 接口與 Generator 函數 17414.6 遍曆器對象的 return()、throw()17514.7 for...of 循環 175數組 175Set 和 Map 結構 177計算生成的數據結構 177類似數組的對象 178對象 179與其他遍曆語法的比較 180第 15 章 Generator 函數 18115.1 簡介 181基本概念 181yield 語句 182與 Iterator 接口的關係 18415.2 next 方法的參數 18515.3 for...of 循環 18715.4 Generator.prototype.throw() 18915.5 Generator.prototype.return() 19315.6 yield* 語句 19415.7 作為對象屬性的 Generator 函數19915.8 Generator 函數的 this 20015.9 Generator 函數推導 20115.10 含義 202Generator 與狀態機 202Generator 與協程 20215.11 應用 203第 16 章 Promise 對象 20816.1 Promise 的含義 20816.2 基本用法 20816.3 Promise.prototype.then() 21116.4 Promise.prototype.catch() 21216.5 Promise.all() 215XV目錄16.6 Promise.race() 21616.7 Promise.resolve() 21616.8 Promise.reject() 21716.9 兩個有用的附加方法 218done() 218finally() 21816.10 應用 219加載圖片 219Generator 函數與 Promise 的結閤 21916.11 async 函數 220第 17 章 異步操作和 async 函數 22117.1 基本概念 221異步 221迴調函數 221Promise 22217.2 Generator 函數 223協程 223Generator 函數的概念 223Generator 函數的數據交換和錯誤處理224異步任務的封裝 22417.3 Thunk 函數 225參數的求值策略 225Thunk 函數的含義 226JavaScript 語言的 Thunk 函數 226Thunkify 模塊 227Generator 函數的流程管理 228Thunk 函數的自動流程管理 22917.4 co 模塊 230基本用法 230co 模塊的原理 230基於 Promise 對象的自動執行 231co 模塊的源碼 232處理並發的異步操作 23317.5 async 函數 234含義 234async 函數的實現 235async 函數的用法 236注意點 236與 Promise、Generator 的比較 238第 18 章 Class 24018.1 Class 基本語法 240概述 240constructor 方法 243實例對象 243name 屬性 244Class 錶達式 245不存在變量提升 245嚴格模式 24618.2 Class 的繼承 246基本用法 246類的 prototype 屬性和 __proto__ 屬性247extends 的繼承目標 248Object.getPrototypeOf() 249super 關鍵字 249實例的 __proto__ 屬性 25018.3 原生構造函數的繼承 25018.4 Class 的取值函數(getter)和存值函數(setter) 25318.5 Class 的 Generator 方法 25418.6 Class 的靜態方法 25418.7 Class 的靜態屬性 25518.8 new.target 屬性 25618.9 Mixin 模式的實現 258第 19 章 修飾器 25919.1 類的修飾 25919.2 方法的修飾 261XVI目錄19.3 為什麼修飾器不能用於函數 26219.4 core-decorators.js 263@autobind 263@readonly 263@override 263@deprecate(彆名 @deprecated) 264@suppressWarnings 26519.5 使用修飾器實現自動發布事件26519.6 Mixin 26619.7 Trait 26719.8 Babel 轉碼器的支持 269第 20 章 Module 27020.1 嚴格模式 27120.2 export 命令 27120.3 import 命令 27220.4 模塊的整體加載 27320.5 module 命令 27420.6 export default 命令 27420.7 模塊的繼承 27620.8 ES6 模塊加載的實質 27720.9 循環加載 278CommonJS 模塊的加載原理 279CommonJS 模塊的循環加載 279ES6 模塊的循環加載 28020.10 ES6 模塊的轉碼 282ES6 module transpiler 282SystemJS 282第 21 章 編程風格 28421.1 塊級作用域 284let 取代 var 284全局常量和綫程安全 285嚴格模式 28521.2 字符串 28521.3 解構賦值 28521.4 對象 28621.5 數組 28821.6 函數 28821.7 Map 結構 28921.8 Class 29021.9 模塊 29121.10 ESLint 的使用 292第 22 章 讀懂 ECMAScript 規格 29322.1 概述 29322.2 相等運算符 29322.3 數組的空位 29522.4 數組的 map 方法 296第 23 章 參考鏈接 29923.1 官方文件 29923.2 綜閤介紹 29923.3 let 和 const 30223.4 解構賦值 30223.5 字符串 30323.6 正則 30423.7 數值 30423.8 數組 30423.9 函數 30523.10 對象 30623.11 Proxy 和 Reflect 30623.12 Symbol 30823.13 二進製數組 30823.14 Set 和 Map 30923.15 Iterator 31023.16 Generator 31123.17 Promise 對象 31223.18 Class 31423.19 Decorator 31423.20 Module 31523.21 工具 316
前言/序言
2012年年底,我開始動手做一個開源項目《JavaScript標準參考教程》(https://github.com/ruanyf/jstutorial)。原來的設想是將自己的學習筆記整理成一本書,哪裏料到,這個項目不斷膨脹,最後變成瞭關於ECMAScript 5及其外圍API的全麵解讀和參考手冊,寫瞭一年多還沒寫完。
那個項目的最後一章就是ECMAScript 6的語法簡介。那一章也是越寫越長,最後我不得不決定,把它獨立齣來,作為一個新項目,也就是您現在看到的這本書。
JavaScript已經是互聯網開發的第一大語言,而且正在變成一種全領域的語言。著名程序員Jeff Atwood甚至提齣瞭一條“Atwood定律”:“所有可以用JavaScript編寫的程序,最終都會齣現JavaScript的版本。”(Any application that can be written in JavaScript will eventually be written in JavaScript.)
ECMAScript正是JavaScript的國際標準,這就決定瞭該標準的重要性。而ECMAScript 6是ECMAScript曆史上最大的一次版本升級,在語言的各個方麵都有極大的變化,即使是熟練的JavaScript程序員,也需要重新學習。由於ES6的設計目標是企業級開發和大型項目,所以可以預料,除瞭互聯網開發者,將來還會有大量應用程序開發者(甚至操作係統開發者)成為ES6的學習者。
我寫作這本書的目標,就是想為上麵這些學習者,提供一本篇幅較短、簡明易懂、符閤中文錶達習慣的ES6教程。它由淺入深、循序漸進,既有重要概念的講解,又有API接口的羅列,便於日後當作參考手冊查閱,還提供大量示例代碼,讓讀者不僅一看就懂,還能舉一反三,直接復製用於實際項目之中。
需要聲明的是,為瞭突齣重點,本書隻涉及ES6與ES5的不同之處,不對JavaScript已有的語法做全麵講解,畢竟市場上這樣的教程已有很多瞭。因此,本書不是JavaScript入門教材,不適閤初學者。閱讀本書之前,需要對JavaScript的基本語法有所瞭解。
我本人也是一個ES6 的學習者,不敢說自己有多高的水平,隻是較早地接觸瞭這個主題,持續地讀瞭許多資料,追蹤標準的進展,做瞭詳細的筆記而已。雖然我盡瞭最大努力,並且原稿在GitHub 上公開後,已經得到瞭大量的勘誤,但是本書的不如人意之處恐怕還是有不少。
阮一峰
2014 年6 月4 日,寫於上海 阮一峰
2014 年6 月4 日,寫於上海
ES 6 標準入門(第2版) 下載 mobi epub pdf txt 電子書 格式
評分
☆☆☆☆☆
朋友推薦的書,還沒看,質量不錯。內容再議
評分
☆☆☆☆☆
贊一下京東快遞員相當貼心,京東老用戶瞭,會一直支持下去
評分
☆☆☆☆☆
幫人買的,但願沒問題
評分
☆☆☆☆☆
慕名而來,支持正版。這本書講得很好,尤其是例子寫得好,全麵
評分
☆☆☆☆☆
阮老師的技術書一定要支持,詩集就算瞭。
評分
☆☆☆☆☆
有汙染點,希望以後包裝好些,
評分
☆☆☆☆☆
啥意思哦,我五十塊錢買本書,給我發一本彆人用過的是吧,包裝書皮都沒有,就一個快遞袋光禿禿一本書,還搞得皺巴巴的,啥意思呢,五十塊錢買本二手書籍是嗎?非常生氣!!!
評分
☆☆☆☆☆
朋友推薦的書,還沒看,質量不錯。內容再議
評分
☆☆☆☆☆
一直想入手的書,趁活動買買買。