[..]
中可以放置任意合法表达式;计算属性名最常见的用法可能就是和Symbols共同使用;[[Prototype]]
=>
的关注多数都在于从代码中去掉function、return和{…}节省了那些宝贵的键盘输入;对=>
的关注多数都在于从代码中去掉function、return和{…}节省了那些宝贵的键盘输入;在箭头函数内部,this绑定不是动态的,而是词法的;底线:=>
是关于this、arguments和super的词法绑定。这个ES6的特性设计用来修正一些常见的问题,而不是bug、巧合或者错误[...gclef].length
=>
箭头函数这样的特性看起来是为了使代码更简洁的语法,实际上它有非常特别的行为特性,应该只在适当的时候使用{value: .., done: true/false}
[[Prototype]]
委托链接-通常被误称为“继承”或者令人迷惑的标识为“原型继承”;在构造器中,super自动指向“父构造器”,在方法中,super会指向“父对象”,这样就可以访问其属性/方法了;for..of
和...
这些新语言特性来消耗迭代器yield/next
消息传递)生成供迭代消耗的值[[prototype]]
链中相对引用的棘手问题reject(..)
和Promise.reject(..)
并不区分接收的值是什么;Promise.all([..])
等待所有都完成(或者第一个拒绝),而Promise.race([..])
等待第一个完成或者拒绝;Promise.all([])
将会立即完成(没有完成值),Promise.race([])
将会永远挂起。因此建议,永远不要用空数组使用这些方法;splice(..)
、push(..)
等)和concat(..)
;要清楚TypedArray中德元素是限制在声明的位数大小中的;要解决平方值溢出的局限,可以使用TypedArray.from(..)
函数;(map)
的主要机制get(..)
和set(..)
方法完美代替has(..)
中的比较算法和Object.is(..)
几乎一样Object.is(..)
:静态函数Object.is(..)
执行比===比较更严格的值比较;Object.is(..)
调用底层的SameValue算法;如果需要严格识别NaN或者-0,那么应该选择Object.is(..)
;[[Prototype]]
用于行为委托[[Prototype]]
链接的空对象;[[OwnPropertyKeys]]
算法定义的;其顺序为(首先,按照数字上升排序,枚举所有整数索引拥有的属性;然后,按照创建顺序枚举其余的拥有的字符串属性名;最后,按照创建顺序枚举拥有的符号属性;)