121.a0b3693a.js 54 KB

1
  1. (window.webpackJsonp=window.webpackJsonp||[]).push([[121],{451:function(e,r,t){"use strict";t.r(r);var a=t(3),n=Object(a.a)({},(function(){var e=this,r=e._self._c;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"参考链接"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#参考链接"}},[e._v("#")]),e._v(" 参考链接")]),e._v(" "),r("h2",{attrs:{id:"官方文件"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#官方文件"}},[e._v("#")]),e._v(" 官方文件")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"http://www.ecma-international.org/ecma-262/6.0/index.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ECMAScript® 2015 Language Specification"),r("OutboundLink")],1),e._v(": ECMAScript 2015 规格")]),e._v(" "),r("li",[r("a",{attrs:{href:"http://www.ecma-international.org/ecma-262/7.0/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ECMAScript® 2016 Language Specification"),r("OutboundLink")],1),e._v(": ECMAScript 2016 规格")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://tc39.github.io/ecma262/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ECMAScript® 2017 Language Specification"),r("OutboundLink")],1),e._v(":ECMAScript 2017 规格(草案)")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/tc39/ecma262",target:"_blank",rel:"noopener noreferrer"}},[e._v("ECMAScript Current Proposals"),r("OutboundLink")],1),e._v(": ECMAScript 当前的所有提案")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/tc39/proposals",target:"_blank",rel:"noopener noreferrer"}},[e._v("ECMAScript Active Proposals"),r("OutboundLink")],1),e._v(": 已经进入正式流程的提案")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/hemanth/es-next",target:"_blank",rel:"noopener noreferrer"}},[e._v("ECMAScript proposals"),r("OutboundLink")],1),e._v(":从阶段 0 到阶段 4 的所有提案列表")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/tc39/agendas",target:"_blank",rel:"noopener noreferrer"}},[e._v("TC39 meeting agendas"),r("OutboundLink")],1),e._v(": TC39 委员会历年的会议记录")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://ecmascript-daily.github.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ECMAScript Daily"),r("OutboundLink")],1),e._v(": TC39 委员会的动态")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://tc39.github.io/process-document/",target:"_blank",rel:"noopener noreferrer"}},[e._v("The TC39 Process"),r("OutboundLink")],1),e._v(": 提案进入正式规格的流程")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://thefeedbackloop.xyz/tc39-a-process-sketch-stages-0-and-1/",target:"_blank",rel:"noopener noreferrer"}},[e._v("TC39: A Process Sketch, Stages 0 and 1"),r("OutboundLink")],1),e._v(": Stage 0 和 Stage 1 的含义")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://thefeedbackloop.xyz/tc39-process-sketch-stage-2/",target:"_blank",rel:"noopener noreferrer"}},[e._v("TC39 Process Sketch, Stage 2"),r("OutboundLink")],1),e._v(": Stage 2 的含义")])]),e._v(" "),r("h2",{attrs:{id:"综合介绍"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#综合介绍"}},[e._v("#")]),e._v(" 综合介绍")]),e._v(" "),r("ul",[r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://exploringjs.com/es6/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Exploring ES6: Upgrade to the next version of JavaScript"),r("OutboundLink")],1),e._v(": ES6 的专著,本书的许多代码实例来自该书")]),e._v(" "),r("li",[e._v("Sayanee Basu, "),r("a",{attrs:{href:"http://net.tutsplus.com/articles/news/ecmascript-6-today/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Use ECMAScript 6 Today"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Ariya Hidayat, "),r("a",{attrs:{href:"http://www.sencha.com/blog/toward-modern-web-apps-with-ecmascript-6/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Toward Modern Web Apps with ECMAScript 6"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Dale Schouten, "),r("a",{attrs:{href:"http://html5hub.com/10-ecmascript-6-tricks-you-can-perform-right-now/",target:"_blank",rel:"noopener noreferrer"}},[e._v("10 Ecmascript-6 tricks you can perform right now"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Colin Toh, "),r("a",{attrs:{href:"http://colintoh.com/blog/lightweight-es6-features",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lightweight ES6 Features That Pack A Punch"),r("OutboundLink")],1),e._v(": ES6 的一些“轻量级”的特性介绍")]),e._v(" "),r("li",[e._v("Domenic Denicola, "),r("a",{attrs:{href:"http://www.slideshare.net/domenicdenicola/es6-the-awesome-parts",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6: The Awesome Parts"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Nicholas C. Zakas, "),r("a",{attrs:{href:"https://github.com/nzakas/understandinges6",target:"_blank",rel:"noopener noreferrer"}},[e._v("Understanding ECMAScript 6"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Justin Drake, "),r("a",{attrs:{href:"https://github.com/JustinDrake/node-es6-examples",target:"_blank",rel:"noopener noreferrer"}},[e._v("ECMAScript 6 in Node.JS"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Ryan Dao, "),r("a",{attrs:{href:"http://ryandao.net/portal/content/summary-ecmascript-6-major-features",target:"_blank",rel:"noopener noreferrer"}},[e._v("Summary of ECMAScript 6 major features"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Luke Hoban, "),r("a",{attrs:{href:"https://github.com/lukehoban/es6features",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6 features"),r("OutboundLink")],1),e._v(": ES6 新语法点的罗列")]),e._v(" "),r("li",[e._v("Traceur-compiler, "),r("a",{attrs:{href:"https://github.com/google/traceur-compiler/wiki/LanguageFeatures",target:"_blank",rel:"noopener noreferrer"}},[e._v("Language Features"),r("OutboundLink")],1),e._v(": Traceur 文档列出的一些 ES6 例子")]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"https://speakerdeck.com/rauschma/ecmascript-6-whats-next-for-javascript-august-2014",target:"_blank",rel:"noopener noreferrer"}},[e._v("ECMAScript 6: what’s next for JavaScript?"),r("OutboundLink")],1),e._v(": 关于 ES6 新增语法的综合介绍,有很多例子")]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2015/08/getting-started-es6.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Getting started with ECMAScript 6"),r("OutboundLink")],1),e._v(": ES6 语法点的综合介绍")]),e._v(" "),r("li",[e._v("Toby Ho, "),r("a",{attrs:{href:"http://davidwalsh.name/es6-io",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6 in io.js"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Guillermo Rauch, "),r("a",{attrs:{href:"http://rauchg.com/2015/ecmascript-6/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ECMAScript 6"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Benjamin De Cock, "),r("a",{attrs:{href:"https://github.com/bendc/frontend-guidelines",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frontend Guidelines"),r("OutboundLink")],1),e._v(": ES6 最佳实践")]),e._v(" "),r("li",[e._v("Jani Hartikainen, "),r("a",{attrs:{href:"http://codeutopia.net/blog/2015/01/06/es6-what-are-the-benefits-of-the-new-features-in-practice/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6: What are the benefits of the new features in practice?"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("kangax, "),r("a",{attrs:{href:"http://perfectionkills.com/javascript-quiz-es6/",target:"_blank",rel:"noopener noreferrer"}},[e._v("JavaScript quiz. ES6 edition"),r("OutboundLink")],1),e._v(": ES6 小测试")]),e._v(" "),r("li",[e._v("Jeremy Fairbank, "),r("a",{attrs:{href:"https://speakerdeck.com/jfairbank/html5devconf-es7-and-beyond",target:"_blank",rel:"noopener noreferrer"}},[e._v("HTML5DevConf ES7 and Beyond!"),r("OutboundLink")],1),e._v(": ES7 新增语法点介绍")]),e._v(" "),r("li",[e._v("Timothy Gu, "),r("a",{attrs:{href:"https://timothygu.me/es-howto/",target:"_blank",rel:"noopener noreferrer"}},[e._v("How to Read the ECMAScript Specification"),r("OutboundLink")],1),e._v(": 如何读懂 ES6 规格")])]),e._v(" "),r("h2",{attrs:{id:"let-和-const"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#let-和-const"}},[e._v("#")]),e._v(" let 和 const")]),e._v(" "),r("ul",[r("li",[e._v("Kyle Simpson, "),r("a",{attrs:{href:"http://davidwalsh.name/for-and-against-let",target:"_blank",rel:"noopener noreferrer"}},[e._v("For and against let"),r("OutboundLink")],1),e._v(": 讨论 let 命令的作用域")]),e._v(" "),r("li",[e._v("kangax, "),r("a",{attrs:{href:"http://es-discourse.com/t/why-typeof-is-no-longer-safe/15",target:"_blank",rel:"noopener noreferrer"}},[e._v("Why typeof is no longer “safe”"),r("OutboundLink")],1),e._v(": 讨论在块级作用域内,let 命令的变量声明和赋值的行为")]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2015/02/es6-scoping.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Variables and scoping in ECMAScript 6"),r("OutboundLink")],1),e._v(": 讨论块级作用域与 let 和 const 的行为")]),e._v(" "),r("li",[e._v("Nicolas Bevacqua, "),r("a",{attrs:{href:"http://ponyfoo.com/articles/es6-let-const-and-temporal-dead-zone-in-depth",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6 Let, Const and the “Temporal Dead Zone” (TDZ) in Depth"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("acorn, "),r("a",{attrs:{href:"https://github.com/ternjs/acorn/issues/118",target:"_blank",rel:"noopener noreferrer"}},[e._v("Function statements in strict mode"),r("OutboundLink")],1),e._v(": 块级作用域对严格模式的函数声明的影响")]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2016/09/global.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES proposal: global"),r("OutboundLink")],1),e._v(": 顶层对象"),r("code",[e._v("global")])]),e._v(" "),r("li",[e._v("Mathias Bynens, "),r("a",{attrs:{href:"https://mathiasbynens.be/notes/globalthis",target:"_blank",rel:"noopener noreferrer"}},[e._v("A horrifying "),r("code",[e._v("globalThis")]),e._v(" polyfill in universal JavaScript"),r("OutboundLink")],1),e._v(":如何写 globalThis 的垫片库")])]),e._v(" "),r("h2",{attrs:{id:"解构赋值"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#解构赋值"}},[e._v("#")]),e._v(" 解构赋值")]),e._v(" "),r("ul",[r("li",[e._v("Nick Fitzgerald, "),r("a",{attrs:{href:"http://fitzgeraldnick.com/weblog/50/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Destructuring Assignment in ECMAScript 6"),r("OutboundLink")],1),e._v(": 详细介绍解构赋值的用法")]),e._v(" "),r("li",[e._v("Nicholas C. Zakas, "),r("a",{attrs:{href:"https://www.nczonline.net/blog/2015/10/ecmascript-6-destructuring-gotcha/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ECMAScript 6 destructuring gotcha"),r("OutboundLink")],1)])]),e._v(" "),r("h2",{attrs:{id:"字符串"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#字符串"}},[e._v("#")]),e._v(" 字符串")]),e._v(" "),r("ul",[r("li",[e._v("Nicholas C. Zakas, "),r("a",{attrs:{href:"http://www.nczonline.net/blog/2012/08/01/a-critical-review-of-ecmascript-6-quasi-literals/",target:"_blank",rel:"noopener noreferrer"}},[e._v("A critical review of ECMAScript 6 quasi-literals"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Mozilla Developer Network, "),r("a",{attrs:{href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/template_strings",target:"_blank",rel:"noopener noreferrer"}},[e._v("Template strings"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Addy Osmani, "),r("a",{attrs:{href:"http://updates.html5rocks.com/2015/01/ES6-Template-Strings",target:"_blank",rel:"noopener noreferrer"}},[e._v("Getting Literal With ES6 Template Strings"),r("OutboundLink")],1),e._v(": 模板字符串的介绍")]),e._v(" "),r("li",[e._v("Blake Winton, "),r("a",{attrs:{href:"https://weblog.latte.ca/blake/tech/firefox/templates.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6 Templates"),r("OutboundLink")],1),e._v(": 模板字符串的介绍")]),e._v(" "),r("li",[e._v("Peter Jaszkowiak, "),r("a",{attrs:{href:"https://medium.com/@PitaJ/how-to-write-a-template-compiler-in-javascript-f174df6f32f",target:"_blank",rel:"noopener noreferrer"}},[e._v("How to write a template compiler in JavaScript"),r("OutboundLink")],1),e._v(": 使用模板字符串,编写一个模板编译函数")]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2015/11/string-padding.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES.stage3: string padding"),r("OutboundLink")],1)])]),e._v(" "),r("h2",{attrs:{id:"正则"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#正则"}},[e._v("#")]),e._v(" 正则")]),e._v(" "),r("ul",[r("li",[e._v("Mathias Bynens, "),r("a",{attrs:{href:"https://mathiasbynens.be/notes/es6-unicode-regex",target:"_blank",rel:"noopener noreferrer"}},[e._v("Unicode-aware regular expressions in ES6"),r("OutboundLink")],1),e._v(": 详细介绍正则表达式的 u 修饰符")]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2015/07/regexp-es6.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("New regular expression features in ECMAScript 6"),r("OutboundLink")],1),e._v(":ES6 正则特性的详细介绍")]),e._v(" "),r("li",[e._v("Yang Guo, "),r("a",{attrs:{href:"http://v8project.blogspot.jp/2016/02/regexp-lookbehind-assertions.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("RegExp lookbehind assertions"),r("OutboundLink")],1),e._v(":介绍后行断言")]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://2ality.com/2017/05/regexp-named-capture-groups.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES proposal: RegExp named capture groups"),r("OutboundLink")],1),e._v(": 具名组匹配的介绍")]),e._v(" "),r("li",[e._v("Mathias Bynens, "),r("a",{attrs:{href:"https://mathiasbynens.be/notes/es-regexp-proposals",target:"_blank",rel:"noopener noreferrer"}},[e._v("ECMAScript regular expressions are getting better!"),r("OutboundLink")],1),e._v(": 介绍 ES2018 添加的多项正则语法")])]),e._v(" "),r("h2",{attrs:{id:"数值"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#数值"}},[e._v("#")]),e._v(" 数值")]),e._v(" "),r("ul",[r("li",[e._v("Nicolas Bevacqua, "),r("a",{attrs:{href:"http://ponyfoo.com/articles/es6-number-improvements-in-depth",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6 Number Improvements in Depth"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://2ality.com/2017/03/es-integer.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES proposal: arbitrary precision integers"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Mathias Bynens, "),r("a",{attrs:{href:"https://developers.google.com/web/updates/2018/05/bigint",target:"_blank",rel:"noopener noreferrer"}},[e._v("BigInt: arbitrary-precision integers in JavaScript"),r("OutboundLink")],1)])]),e._v(" "),r("h2",{attrs:{id:"数组"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#数组"}},[e._v("#")]),e._v(" 数组")]),e._v(" "),r("ul",[r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2014/05/es6-array-methods.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ECMAScript 6’s new array methods"),r("OutboundLink")],1),e._v(": 对 ES6 新增的数组方法的全面介绍")]),e._v(" "),r("li",[e._v("TC39, "),r("a",{attrs:{href:"https://github.com/tc39/Array.prototype.includes/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Array.prototype.includes"),r("OutboundLink")],1),e._v(": 数组的 includes 方法的规格")]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2015/09/holes-arrays-es6.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ECMAScript 6: holes in Arrays"),r("OutboundLink")],1),e._v(": 数组的空位问题")])]),e._v(" "),r("h2",{attrs:{id:"函数"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#函数"}},[e._v("#")]),e._v(" 函数")]),e._v(" "),r("ul",[r("li",[e._v("Nicholas C. Zakas, "),r("a",{attrs:{href:"http://www.nczonline.net/blog/2013/09/10/understanding-ecmascript-6-arrow-functions/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Understanding ECMAScript 6 arrow functions"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Jack Franklin, "),r("a",{attrs:{href:"http://javascriptplayground.com/blog/2014/04/real-life-es6-arrow-fn/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Real Life ES6 - Arrow Functions"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2014/04/required-parameters-es6.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Handling required parameters in ECMAScript 6"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Dmitry Soshnikov, "),r("a",{attrs:{href:"http://dmitrysoshnikov.com/ecmascript/es6-notes-default-values-of-parameters/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6 Notes: Default values of parameters"),r("OutboundLink")],1),e._v(": 介绍参数的默认值")]),e._v(" "),r("li",[e._v("Ragan Wald, "),r("a",{attrs:{href:"http://raganwald.com/2015/02/02/destructuring.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Destructuring and Recursion in ES6"),r("OutboundLink")],1),e._v(": rest 参数和扩展运算符的详细介绍")]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2015/09/function-names-es6.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("The names of functions in ES6"),r("OutboundLink")],1),e._v(": 函数的 name 属性的详细介绍")]),e._v(" "),r("li",[e._v("Kyle Simpson, "),r("a",{attrs:{href:"http://blog.getify.com/arrow-this/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Arrow This"),r("OutboundLink")],1),e._v(": 箭头函数并没有自己的 this")]),e._v(" "),r("li",[e._v("Derick Bailey, "),r("a",{attrs:{href:"http://derickbailey.com/2015/09/28/do-es6-arrow-functions-really-solve-this-in-javascript/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Do ES6 Arrow Functions Really Solve “this” In JavaScript?"),r("OutboundLink")],1),e._v(":使用箭头函数处理 this 指向,必须非常小心")]),e._v(" "),r("li",[e._v("Mark McDonnell, "),r("a",{attrs:{href:"http://www.integralist.co.uk/posts/js-recursion.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Understanding recursion in functional JavaScript programming"),r("OutboundLink")],1),e._v(": 如何自己实现尾递归优化")]),e._v(" "),r("li",[e._v("Nicholas C. Zakas, "),r("a",{attrs:{href:"https://www.nczonline.net/blog/2016/10/the-ecmascript-2016-change-you-probably-dont-know/",target:"_blank",rel:"noopener noreferrer"}},[e._v("The ECMAScript 2016 change you probably don't know"),r("OutboundLink")],1),e._v(": 使用参数默认值时,不能在函数内部显式开启严格模式")]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://2ality.com/2017/08/optional-catch-binding.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES proposal: optional catch binding"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Cynthia Lee, "),r("a",{attrs:{href:"https://medium.freecodecamp.org/when-and-why-you-should-use-es6-arrow-functions-and-when-you-shouldnt-3d851d7f0b26",target:"_blank",rel:"noopener noreferrer"}},[e._v("When you should use ES6 arrow functions — and when you shouldn’t"),r("OutboundLink")],1),e._v(": 讨论箭头函数的适用场合")]),e._v(" "),r("li",[e._v("Eric Elliott, "),r("a",{attrs:{href:"https://medium.com/javascript-scene/what-is-this-the-inner-workings-of-javascript-objects-d397bfa0708a",target:"_blank",rel:"noopener noreferrer"}},[e._v("What is this?"),r("OutboundLink")],1),e._v(": 箭头函数内部的 this 的解释。")])]),e._v(" "),r("h2",{attrs:{id:"对象"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#对象"}},[e._v("#")]),e._v(" 对象")]),e._v(" "),r("ul",[r("li",[e._v("Addy Osmani, "),r("a",{attrs:{href:"http://www.html5rocks.com/en/tutorials/es7/observe/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Data-binding Revolutions with Object.observe()"),r("OutboundLink")],1),e._v(": 介绍 Object.observe()的概念")]),e._v(" "),r("li",[e._v("Sella Rafaeli, "),r("a",{attrs:{href:"http://www.sellarafaeli.com/blog/native_javascript_data_binding",target:"_blank",rel:"noopener noreferrer"}},[e._v("Native JavaScript Data-Binding"),r("OutboundLink")],1),e._v(": 如何使用 Object.observe 方法,实现数据对象与 DOM 对象的双向绑定")]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2015/09/proto-es6.html",target:"_blank",rel:"noopener noreferrer"}},[r("code",[e._v("__proto__")]),e._v(" in ECMAScript 6"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2015/10/enumerability-es6.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Enumerability in ECMAScript 6"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2016/02/object-getownpropertydescriptors.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES proposal: Object.getOwnPropertyDescriptors()"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("TC39, "),r("a",{attrs:{href:"https://github.com/tc39/proposal-object-getownpropertydescriptors",target:"_blank",rel:"noopener noreferrer"}},[e._v("Object.getOwnPropertyDescriptors Proposal"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("David Titarenco, "),r("a",{attrs:{href:"https://dvt.name/2018/06/02/spread-syntax-breaks-javascript/",target:"_blank",rel:"noopener noreferrer"}},[e._v("How Spread Syntax Breaks JavaScript"),r("OutboundLink")],1),e._v(": 扩展运算符的一些不合理的地方")])]),e._v(" "),r("h2",{attrs:{id:"symbol"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#symbol"}},[e._v("#")]),e._v(" Symbol")]),e._v(" "),r("ul",[r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2014/12/es6-symbols.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Symbols in ECMAScript 6"),r("OutboundLink")],1),e._v(": Symbol 简介")]),e._v(" "),r("li",[e._v("MDN, "),r("a",{attrs:{href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol",target:"_blank",rel:"noopener noreferrer"}},[e._v("Symbol"),r("OutboundLink")],1),e._v(": Symbol 类型的详细介绍")]),e._v(" "),r("li",[e._v("Jason Orendorff, "),r("a",{attrs:{href:"https://hacks.mozilla.org/2015/06/es6-in-depth-symbols/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6 In Depth: Symbols"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Keith Cirkel, "),r("a",{attrs:{href:"http://blog.keithcirkel.co.uk/metaprogramming-in-es6-symbols/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Metaprogramming in ES6: Symbols and why they're awesome"),r("OutboundLink")],1),e._v(": Symbol 的深入介绍")]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2015/09/well-known-symbols-es6.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Customizing ES6 via well-known symbols"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Derick Bailey, "),r("a",{attrs:{href:"https://derickbailey.com/2016/03/09/creating-a-true-singleton-in-node-js-with-es6-symbols/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Creating A True Singleton In Node.js, With ES6 Symbols"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Das Surma, "),r("a",{attrs:{href:"https://dassur.ma/things/reading-specs-2/",target:"_blank",rel:"noopener noreferrer"}},[e._v("How to read web specs Part IIa – Or: ECMAScript Symbols"),r("OutboundLink")],1),e._v(": 介绍 Symbol 的规格")])]),e._v(" "),r("h2",{attrs:{id:"set-和-map"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#set-和-map"}},[e._v("#")]),e._v(" Set 和 Map")]),e._v(" "),r("ul",[r("li",[e._v("Mozilla Developer Network, "),r("a",{attrs:{href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet",target:"_blank",rel:"noopener noreferrer"}},[e._v("WeakSet"),r("OutboundLink")],1),e._v(":介绍 WeakSet 数据结构")]),e._v(" "),r("li",[e._v("Dwayne Charrington, "),r("a",{attrs:{href:"http://ilikekillnerds.com/2015/02/what-are-weakmaps-in-es6/",target:"_blank",rel:"noopener noreferrer"}},[e._v("What Are Weakmaps In ES6?"),r("OutboundLink")],1),e._v(": WeakMap 数据结构介绍")]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2015/01/es6-maps-sets.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ECMAScript 6: maps and sets"),r("OutboundLink")],1),e._v(": Set 和 Map 结构的详细介绍")]),e._v(" "),r("li",[e._v("Jason Orendorff, "),r("a",{attrs:{href:"https://hacks.mozilla.org/2015/06/es6-in-depth-collections/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6 In Depth: Collections"),r("OutboundLink")],1),e._v(":Set 和 Map 结构的设计思想")]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2015/08/es6-map-json.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Converting ES6 Maps to and from JSON"),r("OutboundLink")],1),e._v(": 如何将 Map 与其他数据结构互相转换")])]),e._v(" "),r("h2",{attrs:{id:"proxy-和-reflect"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#proxy-和-reflect"}},[e._v("#")]),e._v(" Proxy 和 Reflect")]),e._v(" "),r("ul",[r("li",[e._v("Nicholas C. Zakas, "),r("a",{attrs:{href:"http://www.nczonline.net/blog/2014/04/22/creating-defensive-objects-with-es6-proxies/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Creating defensive objects with ES6 proxies"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2014/12/es6-proxies.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Meta programming with ECMAScript 6 proxies"),r("OutboundLink")],1),e._v(": Proxy 详解")]),e._v(" "),r("li",[e._v("Daniel Zautner, "),r("a",{attrs:{href:"http://dzautner.com/meta-programming-javascript-using-proxies/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Meta-programming JavaScript Using Proxies"),r("OutboundLink")],1),e._v(": 使用 Proxy 实现元编程")]),e._v(" "),r("li",[e._v("Tom Van Cutsem, "),r("a",{attrs:{href:"https://github.com/tvcutsem/harmony-reflect/wiki",target:"_blank",rel:"noopener noreferrer"}},[e._v("Harmony-reflect"),r("OutboundLink")],1),e._v(": Reflect 对象的设计目的")]),e._v(" "),r("li",[e._v("Tom Van Cutsem, "),r("a",{attrs:{href:"https://github.com/tvcutsem/harmony-reflect/blob/master/doc/traps.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proxy Traps"),r("OutboundLink")],1),e._v(": Proxy 拦截操作一览")]),e._v(" "),r("li",[e._v("Tom Van Cutsem, "),r("a",{attrs:{href:"https://github.com/tvcutsem/harmony-reflect/blob/master/doc/api.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Reflect API"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Tom Van Cutsem, "),r("a",{attrs:{href:"https://github.com/tvcutsem/harmony-reflect/blob/master/doc/handler_api.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proxy Handler API"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Nicolas Bevacqua, "),r("a",{attrs:{href:"http://ponyfoo.com/articles/es6-proxies-in-depth",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6 Proxies in Depth"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Nicolas Bevacqua, "),r("a",{attrs:{href:"http://ponyfoo.com/articles/es6-proxy-traps-in-depth",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6 Proxy Traps in Depth"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Nicolas Bevacqua, "),r("a",{attrs:{href:"http://ponyfoo.com/articles/more-es6-proxy-traps-in-depth",target:"_blank",rel:"noopener noreferrer"}},[e._v("More ES6 Proxy Traps in Depth"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2016/11/proxying-builtins.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Pitfall: not all objects can be wrapped transparently by proxies"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Bertalan Miklos, "),r("a",{attrs:{href:"https://blog.risingstack.com/writing-a-javascript-framework-data-binding-es6-proxy/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Writing a JavaScript Framework - Data Binding with ES6 Proxies"),r("OutboundLink")],1),e._v(": 使用 Proxy 实现观察者模式")]),e._v(" "),r("li",[e._v("Keith Cirkel, "),r("a",{attrs:{href:"https://www.keithcirkel.co.uk/metaprogramming-in-es6-part-2-reflect/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Metaprogramming in ES6: Part 2 - Reflect"),r("OutboundLink")],1),e._v(": Reflect API 的详细介绍")])]),e._v(" "),r("h2",{attrs:{id:"promise-对象"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#promise-对象"}},[e._v("#")]),e._v(" Promise 对象")]),e._v(" "),r("ul",[r("li",[e._v("Jake Archibald, "),r("a",{attrs:{href:"http://www.html5rocks.com/en/tutorials/es6/promises/",target:"_blank",rel:"noopener noreferrer"}},[e._v("JavaScript Promises: There and back again"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Jake Archibald, "),r("a",{attrs:{href:"https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tasks, microtasks, queues and schedules"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Tilde, "),r("a",{attrs:{href:"https://github.com/tildeio/rsvp.js",target:"_blank",rel:"noopener noreferrer"}},[e._v("rsvp.js"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Sandeep Panda, "),r("a",{attrs:{href:"http://www.sitepoint.com/overview-javascript-promises/",target:"_blank",rel:"noopener noreferrer"}},[e._v("An Overview of JavaScript Promises"),r("OutboundLink")],1),e._v(": ES6 Promise 入门介绍")]),e._v(" "),r("li",[e._v("Dave Atchley, "),r("a",{attrs:{href:"http://www.datchley.name/es6-promises/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6 Promises"),r("OutboundLink")],1),e._v(": Promise 的语法介绍")]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2014/10/es6-promises-api.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ECMAScript 6 promises (2/2): the API"),r("OutboundLink")],1),e._v(": 对 ES6 Promise 规格和用法的详细介绍")]),e._v(" "),r("li",[e._v("Jack Franklin, "),r("a",{attrs:{href:"http://javascriptplayground.com/blog/2015/02/promises/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Embracing Promises in JavaScript"),r("OutboundLink")],1),e._v(": catch 方法的例子")]),e._v(" "),r("li",[e._v("Ronald Chen, "),r("a",{attrs:{href:"https://medium.com/@pyrolistical/how-to-get-out-of-promise-hell-8c20e0ab0513#.2an1he6vf",target:"_blank",rel:"noopener noreferrer"}},[e._v("How to escape Promise Hell"),r("OutboundLink")],1),e._v(": 如何使用"),r("code",[e._v("Promise.all")]),e._v("方法的一些很好的例子")]),e._v(" "),r("li",[e._v("Jordan Harband, "),r("a",{attrs:{href:"https://github.com/ljharb/proposal-promise-try",target:"_blank",rel:"noopener noreferrer"}},[e._v("proposal-promise-try"),r("OutboundLink")],1),e._v(": Promise.try() 方法的提案")]),e._v(" "),r("li",[e._v("Sven Slootweg, "),r("a",{attrs:{href:"http://cryto.net/~joepie91/blog/2016/05/11/what-is-promise-try-and-why-does-it-matter/",target:"_blank",rel:"noopener noreferrer"}},[e._v("What is Promise.try, and why does it matter?"),r("OutboundLink")],1),e._v(": Promise.try() 方法的优点")]),e._v(" "),r("li",[e._v("Yehuda Katz, "),r("a",{attrs:{href:"https://thefeedbackloop.xyz/tc39-promises-promises/",target:"_blank",rel:"noopener noreferrer"}},[e._v("TC39: Promises, Promises"),r("OutboundLink")],1),e._v(": Promise.try() 的用处")])]),e._v(" "),r("h2",{attrs:{id:"iterator"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#iterator"}},[e._v("#")]),e._v(" Iterator")]),e._v(" "),r("ul",[r("li",[e._v("Mozilla Developer Network, "),r("a",{attrs:{href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators",target:"_blank",rel:"noopener noreferrer"}},[e._v("Iterators and generators"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Mozilla Developer Network, "),r("a",{attrs:{href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/The_Iterator_protocol",target:"_blank",rel:"noopener noreferrer"}},[e._v("The Iterator protocol"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Jason Orendorff, "),r("a",{attrs:{href:"https://hacks.mozilla.org/2015/04/es6-in-depth-iterators-and-the-for-of-loop/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6 In Depth: Iterators and the for-of loop"),r("OutboundLink")],1),e._v(": 遍历器与 for...of 循环的介绍")]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2013/06/iterators-generators.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Iterators and generators in ECMAScript 6"),r("OutboundLink")],1),e._v(": 探讨 Iterator 和 Generator 的设计目的")]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2015/02/es6-iteration.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Iterables and iterators in ECMAScript 6"),r("OutboundLink")],1),e._v(": Iterator 的详细介绍")]),e._v(" "),r("li",[e._v("Kyle Simpson, "),r("a",{attrs:{href:"http://blog.getify.com/iterating-es6-numbers/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Iterating ES6 Numbers"),r("OutboundLink")],1),e._v(": 在数值对象上部署遍历器")])]),e._v(" "),r("h2",{attrs:{id:"generator"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#generator"}},[e._v("#")]),e._v(" Generator")]),e._v(" "),r("ul",[r("li",[e._v("Matt Baker, "),r("a",{attrs:{href:"http://flippinawesome.org/2014/02/10/replacing-callbacks-with-es6-generators/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Replacing callbacks with ES6 Generators"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Steven Sanderson, "),r("a",{attrs:{href:"http://blog.stevensanderson.com/2013/12/21/experiments-with-koa-and-javascript-generators/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Experiments with Koa and JavaScript Generators"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("jmar777, "),r("a",{attrs:{href:"http://devsmash.com/blog/whats-the-big-deal-with-generators",target:"_blank",rel:"noopener noreferrer"}},[e._v("What's the Big Deal with Generators?"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Marc Harter, "),r("a",{attrs:{href:"http://strongloop.com/strongblog/how-to-generators-node-js-yield-use-cases/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Generators in Node.js: Common Misconceptions and Three Good Use Cases"),r("OutboundLink")],1),e._v(": 讨论 Generator 函数的作用")]),e._v(" "),r("li",[e._v("StackOverflow, "),r("a",{attrs:{href:"http://stackoverflow.com/questions/20977379/es6-yield-what-happens-to-the-arguments-of-the-first-call-next",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6 yield : what happens to the arguments of the first call next()?"),r("OutboundLink")],1),e._v(": 第一次使用 next 方法时不能带有参数")]),e._v(" "),r("li",[e._v("Kyle Simpson, "),r("a",{attrs:{href:"http://davidwalsh.name/es6-generators",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6 Generators: Complete Series"),r("OutboundLink")],1),e._v(": 由浅入深探讨 Generator 的系列文章,共四篇")]),e._v(" "),r("li",[e._v("Gajus Kuizinas, "),r("a",{attrs:{href:"http://gajus.com/blog/2/the-definetive-guide-to-the-javascript-generators",target:"_blank",rel:"noopener noreferrer"}},[e._v("The Definitive Guide to the JavaScript Generators"),r("OutboundLink")],1),e._v(": 对 Generator 的综合介绍")]),e._v(" "),r("li",[e._v("Jan Krems, "),r("a",{attrs:{href:"https://gist.github.com/jkrems/04a2b34fb9893e4c2b5c",target:"_blank",rel:"noopener noreferrer"}},[e._v("Generators Are Like Arrays"),r("OutboundLink")],1),e._v(": 讨论 Generator 可以被当作数据结构看待")]),e._v(" "),r("li",[e._v("Harold Cooper, "),r("a",{attrs:{href:"http://syzygy.st/javascript-coroutines/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Coroutine Event Loops in JavaScript"),r("OutboundLink")],1),e._v(": Generator 用于实现状态机")]),e._v(" "),r("li",[e._v("Ruslan Ismagilov, "),r("a",{attrs:{href:"https://github.com/isRuslan/learn-generators",target:"_blank",rel:"noopener noreferrer"}},[e._v("learn-generators"),r("OutboundLink")],1),e._v(": 编程练习,共 6 道题")]),e._v(" "),r("li",[e._v("Steven Sanderson, "),r("a",{attrs:{href:"http://blog.stevensanderson.com/2013/12/21/experiments-with-koa-and-javascript-generators/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Experiments with Koa and JavaScript Generators"),r("OutboundLink")],1),e._v(": Generator 入门介绍,以 Koa 框架为例")]),e._v(" "),r("li",[e._v("Mahdi Dibaiee, "),r("a",{attrs:{href:"http://dibaiee.ir/es7-array-generator-comprehensions/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES7 Array and Generator comprehensions"),r("OutboundLink")],1),e._v(":ES7 的 Generator 推导")]),e._v(" "),r("li",[e._v("Nicolas Bevacqua, "),r("a",{attrs:{href:"http://ponyfoo.com/articles/es6-generators-in-depth",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6 Generators in Depth"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2015/03/es6-generators.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6 generators in depth"),r("OutboundLink")],1),e._v(": Generator 规格的详尽讲解")]),e._v(" "),r("li",[e._v("Derick Bailey, "),r("a",{attrs:{href:"https://derickbailey.com/2015/10/05/using-es6-generators-to-short-circuit-hierarchical-data-iteration/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Using ES6 Generators To Short-Circuit Hierarchical Data Iteration"),r("OutboundLink")],1),e._v(":使用 for...of 循环完成预定的操作步骤")])]),e._v(" "),r("h2",{attrs:{id:"异步操作和-async-函数"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#异步操作和-async-函数"}},[e._v("#")]),e._v(" 异步操作和 Async 函数")]),e._v(" "),r("ul",[r("li",[e._v("Luke Hoban, "),r("a",{attrs:{href:"https://github.com/lukehoban/ecmascript-asyncawait",target:"_blank",rel:"noopener noreferrer"}},[e._v("Async Functions for ECMAScript"),r("OutboundLink")],1),e._v(": Async 函数的设计思想,与 Promise、Gernerator 函数的关系")]),e._v(" "),r("li",[e._v("Jafar Husain, "),r("a",{attrs:{href:"https://github.com/jhusain/asyncgenerator",target:"_blank",rel:"noopener noreferrer"}},[e._v("Asynchronous Generators for ES7"),r("OutboundLink")],1),e._v(": Async 函数的深入讨论")]),e._v(" "),r("li",[e._v("Nolan Lawson, "),r("a",{attrs:{href:"http://pouchdb.com/2015/03/05/taming-the-async-beast-with-es7.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Taming the asynchronous beast with ES7"),r("OutboundLink")],1),e._v(": async 函数通俗的实例讲解")]),e._v(" "),r("li",[e._v("Jafar Husain, "),r("a",{attrs:{href:"https://docs.google.com/file/d/0B4PVbLpUIdzoMDR5dWstRllXblU/view?sle=true",target:"_blank",rel:"noopener noreferrer"}},[e._v("Async Generators"),r("OutboundLink")],1),e._v(": 对 async 与 Generator 混合使用的一些讨论")]),e._v(" "),r("li",[e._v("Daniel Brain, "),r("a",{attrs:{href:"https://medium.com/@bluepnume/learn-about-promises-before-you-start-using-async-await-eb148164a9c8",target:"_blank",rel:"noopener noreferrer"}},[e._v("Understand promises before you start using async/await"),r("OutboundLink")],1),e._v(": 讨论 async/await 与 Promise 的关系")]),e._v(" "),r("li",[e._v("Jake Archibald, "),r("a",{attrs:{href:"https://developers.google.com/web/fundamentals/getting-started/primers/async-functions",target:"_blank",rel:"noopener noreferrer"}},[e._v("Async functions - making promises friendly"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2016/10/asynchronous-iteration.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES proposal: asynchronous iteration"),r("OutboundLink")],1),e._v(": 异步遍历器的详细介绍")]),e._v(" "),r("li",[e._v("Dima Grossman, "),r("a",{attrs:{href:"http://blog.grossman.io/how-to-write-async-await-without-try-catch-blocks-in-javascript/",target:"_blank",rel:"noopener noreferrer"}},[e._v("How to write async await without try-catch blocks in JavaScript"),r("OutboundLink")],1),e._v(": 除了 try/catch 以外的 async 函数内部捕捉错误的方法")]),e._v(" "),r("li",[e._v("Mostafa Gaafa, "),r("a",{attrs:{href:"https://hackernoon.com/6-reasons-why-javascripts-async-await-blows-promises-away-tutorial-c7ec10518dd9",target:"_blank",rel:"noopener noreferrer"}},[e._v("6 Reasons Why JavaScript’s Async/Await Blows Promises Away"),r("OutboundLink")],1),e._v(": Async 函数的6个好处")]),e._v(" "),r("li",[e._v("Mathias Bynens, "),r("a",{attrs:{href:"https://mathiasbynens.be/notes/async-stack-traces",target:"_blank",rel:"noopener noreferrer"}},[e._v("Asynchronous stack traces: why await beats Promise#then()"),r("OutboundLink")],1),e._v(": async 函数可以保留错误堆栈")])]),e._v(" "),r("h2",{attrs:{id:"class"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#class"}},[e._v("#")]),e._v(" Class")]),e._v(" "),r("ul",[r("li",[e._v("Sebastian Porto, "),r("a",{attrs:{href:"https://reinteractive.net/posts/235-es6-classes-and-javascript-prototypes",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6 classes and JavaScript prototypes"),r("OutboundLink")],1),e._v(": ES6 Class 的写法与 ES5 Prototype 的写法对比")]),e._v(" "),r("li",[e._v("Jack Franklin, "),r("a",{attrs:{href:"http://javascriptplayground.com/blog/2014/07/introduction-to-es6-classes-tutorial/",target:"_blank",rel:"noopener noreferrer"}},[e._v("An introduction to ES6 classes"),r("OutboundLink")],1),e._v(": ES6 class 的入门介绍")]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2014/12/es6-oop.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ECMAScript 6: new OOP features besides classes"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2015/02/es6-classes-final.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Classes in ECMAScript 6 (final semantics)"),r("OutboundLink")],1),e._v(": Class 语法的详细介绍和设计思想分析")]),e._v(" "),r("li",[e._v("Eric Faust, "),r("a",{attrs:{href:"https://hacks.mozilla.org/2015/08/es6-in-depth-subclassing/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6 In Depth: Subclassing"),r("OutboundLink")],1),e._v(": Class 语法的深入介绍")]),e._v(" "),r("li",[e._v("Nicolás Bevacqua, "),r("a",{attrs:{href:"https://ponyfoo.com/articles/binding-methods-to-class-instance-objects",target:"_blank",rel:"noopener noreferrer"}},[e._v("Binding Methods to Class Instance Objects"),r("OutboundLink")],1),e._v(": 如何绑定类的实例中的 this")]),e._v(" "),r("li",[e._v("Jamie Kyle, "),r("a",{attrs:{href:"https://jamie.build/javascripts-new-private-class-fields.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("JavaScript's new #private class fields"),r("OutboundLink")],1),e._v(":私有属性的介绍。")]),e._v(" "),r("li",[e._v("Mathias Bynens, "),r("a",{attrs:{href:"https://developers.google.com/web/updates/2018/12/class-fields",target:"_blank",rel:"noopener noreferrer"}},[e._v("Public and private class fields"),r("OutboundLink")],1),e._v(":实例属性的新写法的介绍。")])]),e._v(" "),r("h2",{attrs:{id:"decorator"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#decorator"}},[e._v("#")]),e._v(" Decorator")]),e._v(" "),r("ul",[r("li",[e._v("Maximiliano Fierro, "),r("a",{attrs:{href:"http://elmasse.github.io/js/decorators-bindings-es7.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Declarative vs Imperative"),r("OutboundLink")],1),e._v(": Decorators 和 Mixin 介绍")]),e._v(" "),r("li",[e._v("Justin Fagnani, "),r("a",{attrs:{href:"http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/",target:"_blank",rel:"noopener noreferrer"}},[e._v('"Real" Mixins with JavaScript Classes'),r("OutboundLink")],1),e._v(": 使用类的继承实现 Mixin")]),e._v(" "),r("li",[e._v("Addy Osmani, "),r("a",{attrs:{href:"https://medium.com/google-developers/exploring-es7-decorators-76ecb65fb841",target:"_blank",rel:"noopener noreferrer"}},[e._v("Exploring ES2016 Decorators"),r("OutboundLink")],1),e._v(": Decorator 的深入介绍")]),e._v(" "),r("li",[e._v("Sebastian McKenzie, "),r("a",{attrs:{href:"https://github.com/wycats/javascript-decorators/issues/4",target:"_blank",rel:"noopener noreferrer"}},[e._v("Allow decorators for functions as well"),r("OutboundLink")],1),e._v(": 为什么修饰器不能用于函数")]),e._v(" "),r("li",[e._v("Maximiliano Fierro, "),r("a",{attrs:{href:"http://cocktailjs.github.io/blog/traits-with-es7-decorators.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Traits with ES7 Decorators"),r("OutboundLink")],1),e._v(": Trait 的用法介绍")]),e._v(" "),r("li",[e._v("Jonathan Creamer: "),r("a",{attrs:{href:"http://jonathancreamer.com/using-es2016-decorators-to-publish-on-an-event-bus/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Using ES2016 Decorators to Publish on an Event Bus"),r("OutboundLink")],1),e._v(": 使用修饰器实现自动发布事件")])]),e._v(" "),r("h2",{attrs:{id:"module"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#module"}},[e._v("#")]),e._v(" Module")]),e._v(" "),r("ul",[r("li",[e._v("Jack Franklin, "),r("a",{attrs:{href:"http://24ways.org/2014/javascript-modules-the-es6-way/",target:"_blank",rel:"noopener noreferrer"}},[e._v("JavaScript Modules the ES6 Way"),r("OutboundLink")],1),e._v(": ES6 模块入门")]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2014/09/es6-modules-final.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ECMAScript 6 modules: the final syntax"),r("OutboundLink")],1),e._v(": ES6 模块的介绍,以及与 CommonJS 规格的详细比较")]),e._v(" "),r("li",[e._v("Dave Herman, "),r("a",{attrs:{href:"http://calculist.org/blog/2012/06/29/static-module-resolution/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Static module resolution"),r("OutboundLink")],1),e._v(": ES6 模块的静态化设计思想")]),e._v(" "),r("li",[e._v("Jason Orendorff, "),r("a",{attrs:{href:"https://hacks.mozilla.org/2015/08/es6-in-depth-modules/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6 In Depth: Modules"),r("OutboundLink")],1),e._v(": ES6 模块设计思想的介绍")]),e._v(" "),r("li",[e._v("Ben Newman, "),r("a",{attrs:{href:"http://benjamn.github.io/empirenode-2015/#/",target:"_blank",rel:"noopener noreferrer"}},[e._v("The Importance of import and export"),r("OutboundLink")],1),e._v(": ES6 模块的设计思想")]),e._v(" "),r("li",[e._v("ESDiscuss, "),r("a",{attrs:{href:"https://esdiscuss.org/topic/why-is-export-default-var-a-1-invalid-syntax",target:"_blank",rel:"noopener noreferrer"}},[e._v('Why is "export default var a = 1;" invalid syntax?'),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Bradley Meck, "),r("a",{attrs:{href:"https://github.com/nodejs/node-eps/blob/master/002-es6-modules.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6 Module Interoperability"),r("OutboundLink")],1),e._v(": 介绍 Node 如何处理 ES6 语法加载 CommonJS 模块")]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2017/01/babel-esm-spec-mode.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Making transpiled ES modules more spec-compliant"),r("OutboundLink")],1),e._v(": ES6 模块编译成 CommonJS 模块的详细介绍")]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2017/01/import-operator.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES proposal: import() – dynamically importing ES modules"),r("OutboundLink")],1),e._v(": import() 的用法")]),e._v(" "),r("li",[e._v("Node EPS, "),r("a",{attrs:{href:"https://github.com/nodejs/node-eps/blob/master/002-es-modules.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES Module Interoperability"),r("OutboundLink")],1),e._v(": Node 对 ES6 模块的处理规格")])]),e._v(" "),r("h2",{attrs:{id:"二进制数组"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#二进制数组"}},[e._v("#")]),e._v(" 二进制数组")]),e._v(" "),r("ul",[r("li",[e._v("Ilmari Heikkinen, "),r("a",{attrs:{href:"http://www.html5rocks.com/en/tutorials/webgl/typed_arrays/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Typed Arrays: Binary Data in the Browser"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Khronos, "),r("a",{attrs:{href:"http://www.khronos.org/registry/typedarray/specs/latest/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Typed Array Specification"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Ian Elliot, "),r("a",{attrs:{href:"http://www.i-programmer.info/projects/36-web/6234-reading-a-bmp-file-in-javascript.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Reading A BMP File In JavaScript"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Renato Mangini, "),r("a",{attrs:{href:"http://updates.html5rocks.com/2012/06/How-to-convert-ArrayBuffer-to-and-from-String",target:"_blank",rel:"noopener noreferrer"}},[e._v("How to convert ArrayBuffer to and from String"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2015/09/typed-arrays.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Typed Arrays in ECMAScript 6"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://2ality.com/2017/01/shared-array-buffer.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES proposal: Shared memory and atomics"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Lin Clark, "),r("a",{attrs:{href:"https://hacks.mozilla.org/2017/06/avoiding-race-conditions-in-sharedarraybuffers-with-atomics/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Avoiding race conditions in SharedArrayBuffers with Atomics"),r("OutboundLink")],1),e._v(": Atomics 对象使用场景的解释")]),e._v(" "),r("li",[e._v("Lars T Hansen, "),r("a",{attrs:{href:"https://github.com/tc39/ecmascript_sharedmem/blob/master/TUTORIAL.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Shared memory - a brief tutorial"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("James Milner, "),r("a",{attrs:{href:"https://www.sitepen.com/blog/2018/09/19/the-return-of-sharedarraybuffers-and-atomics/",target:"_blank",rel:"noopener noreferrer"}},[e._v("The Return of SharedArrayBuffers and Atomics"),r("OutboundLink")],1)])]),e._v(" "),r("h2",{attrs:{id:"simd"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#simd"}},[e._v("#")]),e._v(" SIMD")]),e._v(" "),r("ul",[r("li",[e._v("TC39, "),r("a",{attrs:{href:"https://docs.google.com/presentation/d/1MY9NHrHmL7ma7C8dyNXvmYNNGgVmmxXk8ZIiQtPlfH4/edit#slide=id.p19",target:"_blank",rel:"noopener noreferrer"}},[e._v("SIMD.js Stage 2"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("MDN, "),r("a",{attrs:{href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SIMD",target:"_blank",rel:"noopener noreferrer"}},[e._v("SIMD"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("TC39, "),r("a",{attrs:{href:"https://github.com/tc39/ecmascript_simd",target:"_blank",rel:"noopener noreferrer"}},[e._v("ECMAScript SIMD"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Axel Rauschmayer, "),r("a",{attrs:{href:"http://www.2ality.com/2013/12/simd-js.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("JavaScript gains support for SIMD"),r("OutboundLink")],1)])]),e._v(" "),r("h2",{attrs:{id:"工具"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#工具"}},[e._v("#")]),e._v(" 工具")]),e._v(" "),r("ul",[r("li",[e._v("Babel, "),r("a",{attrs:{href:"https://github.com/thejameskyle/babel-handbook/tree/master/translations/en",target:"_blank",rel:"noopener noreferrer"}},[e._v("Babel Handbook"),r("OutboundLink")],1),e._v(": Babel 的用法介绍")]),e._v(" "),r("li",[e._v("Google, "),r("a",{attrs:{href:"https://github.com/google/traceur-compiler",target:"_blank",rel:"noopener noreferrer"}},[e._v("traceur-compiler"),r("OutboundLink")],1),e._v(": Traceur 编译器")]),e._v(" "),r("li",[e._v("Casper Beyer, "),r("a",{attrs:{href:"http://caspervonb.github.io/2014/03/05/ecmascript6-features-and-tools.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ECMAScript 6 Features and Tools"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Stoyan Stefanov, "),r("a",{attrs:{href:"http://www.phpied.com/writing-es6-today-with-jstransform/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Writing ES6 today with jstransform"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("ES6 Module Loader, "),r("a",{attrs:{href:"https://github.com/ModuleLoader/es6-module-loader",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6 Module Loader Polyfill"),r("OutboundLink")],1),e._v(": 在浏览器和 node.js 加载 ES6 模块的一个库,文档里对 ES6 模块有详细解释")]),e._v(" "),r("li",[e._v("Paul Miller, "),r("a",{attrs:{href:"https://github.com/paulmillr/es6-shim",target:"_blank",rel:"noopener noreferrer"}},[e._v("es6-shim"),r("OutboundLink")],1),e._v(": 一个针对老式浏览器,模拟 ES6 部分功能的垫片库(shim)")]),e._v(" "),r("li",[e._v("army8735, "),r("a",{attrs:{href:"https://github.com/army8735/jsdc",target:"_blank",rel:"noopener noreferrer"}},[e._v("JavaScript Downcast"),r("OutboundLink")],1),e._v(": 国产的 ES6 到 ES5 的转码器")]),e._v(" "),r("li",[e._v("esnext, "),r("a",{attrs:{href:"https://github.com/esnext/es6-module-transpiler",target:"_blank",rel:"noopener noreferrer"}},[e._v("ES6 Module Transpiler"),r("OutboundLink")],1),e._v(":基于 node.js 的将 ES6 模块转为 ES5 代码的命令行工具")]),e._v(" "),r("li",[e._v("Sebastian McKenzie, "),r("a",{attrs:{href:"http://babeljs.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("BabelJS"),r("OutboundLink")],1),e._v(": ES6 转译器")]),e._v(" "),r("li",[e._v("SystemJS, "),r("a",{attrs:{href:"https://github.com/systemjs/systemjs",target:"_blank",rel:"noopener noreferrer"}},[e._v("SystemJS"),r("OutboundLink")],1),e._v(": 在浏览器中加载 AMD、CJS、ES6 模块的一个垫片库")]),e._v(" "),r("li",[e._v("Modernizr, "),r("a",{attrs:{href:"https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills#ecmascript-6-harmony",target:"_blank",rel:"noopener noreferrer"}},[e._v("HTML5 Cross Browser Polyfills"),r("OutboundLink")],1),e._v(": ES6 垫片库清单")]),e._v(" "),r("li",[e._v("Facebook, "),r("a",{attrs:{href:"https://github.com/facebook/regenerator",target:"_blank",rel:"noopener noreferrer"}},[e._v("regenerator"),r("OutboundLink")],1),e._v(": 将 Generator 函数转为 ES5 的转码器")])])])}),[],!1,null,null,null);r.default=n.exports}}]);