http://www.ecma-international.org/ecma-262/6.0/#sec-class-definitions
14.5 Class Definitions
Syntax
ClassDeclaration[Yield, Default] :
class BindingIdentifier[?Yield] ClassTail[?Yield]
[+Default] class ClassTail[?Yield]
ClassExpression[Yield] :
class BindingIdentifier[?Yield]opt ClassTail[?Yield]
ClassTail[Yield] :
ClassHeritage[?Yield]opt { ClassBody[?Yield]opt }
ClassHeritage[Yield] :
extends LeftHandSideExpression[?Yield]
ClassBody[Yield] :
ClassElementList[?Yield]
ClassElementList[Yield] :
ClassElement[?Yield]
ClassElementList[?Yield] ClassElement[?Yield]
ClassElement[Yield] :
MethodDefinition[?Yield]
static MethodDefinition[?Yield]
;
NOTE A ClassBody is always strict code.
https://chadaustin.me/2012/12/javascript-new-operator-ecma-262/
http://stackoverflow.com/questions/761905/how-will-ecma-262-ecmascript-5-help-you
https://blog.appdynamics.com/engineering/7-ways-es2015-can-improve-your-javascript-programing/
Rest parameters
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Rest_parameters
元编程
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Meta_programming
从ES6 开始采用的 Proxy 对象允许拦截某些操作操作和实现自定义行为。例如,获取一个对象上的属性:
Reflect
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Reflect
let
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/let