深入理解ES6

相较于ECMAScript 5标准,ECMAScript 6标准使JavaScript变得易于使用。

本书有利于读者从ECMAScript 5 向 6迁移,但对于已经熟悉ECMAScript 6的人来说——只能起到一个细节上的补全作用。

掌握ECMAScript 6标准中的新特性,不仅有利于JavaScript代码的编写,还有利于理解其他语言中的同类特性。他山之石,可以攻玉。

文摘

for-infor-of循环的每次迭代中,letconst都会创建新绑定,从而使循环体内创建的函数可以访问到相应迭代的值。在for循环中,let也是如此,使用const则可能引发错误。

JavaScript函数有两个不同的内部方法:[[Call]][[Construct]]。当通过new关键字调用函数时,执行的是[[Construct]]函数,它负责创建一个通常被称作实例的新对象,然后再执行函数体,将this绑定到实例上;如果不通过new关键字调用函数,则执行[[Call]]函数,从而直接执行代码中的函数体。

箭头函数中的thissuperargumentsnew.target是由外围最近一层非箭头函数决定的。箭头函数没有[[Construct]]方法,所以不能被用作构造函数。

Object.is方法对于所有值进行严格等价判断。Object.assign方法可以接受任意数量的源对象,并按指定的顺序将属性复制到接收对象中。若多个源对象具有同名属性,则排位靠后的会覆盖排位靠前的。

super引用相当于指向对象原型的指针,也就是Object.getPrototypeof(this)的值。

在全局作用域中有一个Symbol注册表,在代码的不同位置,总是可以通过相同的描述字符串获取同一个Symbol

Proxy可以拦截JavaScript引擎内部目标的底层对象操作,Reflect对象中方法的默认特性与相同的底层操作一致。