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/
Functions
arguments
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/arguments
arguments对象是所有函数中可用的局部变量。你可以使用arguments对象在函数中引用函数的参数。
此对象包含传递给函数的每个参数的条目,第一个条目的索引从0开始。
例如,如果一个函数传递了三个参数,你可以参考它们如下:
参数也可以被设置:
arguments对象不是一个 Array 。它类似于数组,但除了 长度之外没有任何数组属性。
例如,它没有 pop 方法。但是它可以被转换为一个真正的数组::
你还可以使用 Array.from()方法或 spread 运算符将 arguments 转换为真正的数组:
Array.from()
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/from