关于本书你需要知道的内容
目录
请支持本书:购买 (PDF, EPUB, MOBI)捐赠
(广告,请勿屏蔽。)

关于本书你需要知道的内容

本书是关于 ECMAScript 6(官方名称为 ECMAScript 2015)的,它是 JavaScript 的新版本。

读者对象:JavaScript 程序员

为了理解本书,您应该已经了解 JavaScript。如果您不了解:我的另一本书“Speaking JavaScript”在线免费,并向程序员教授所有 JavaScript(包括 ECMAScript 5)。

我为什么要读这本书?

如何阅读本书

本书从三个详细程度介绍了 ES6

其他需要了解的事项

本书的资料来源

我在 ES6 功能实现之前很久就开始写这本书了,这需要进行大量的研究。必要的资料来源是

词汇表

严格模式与草率模式

ECMAScript 5 引入了语言模式:严格模式 通过更改其语义、执行更多检查和抛出更多异常,使 JavaScript 成为一种更简洁的语言。有关更多信息,请参阅“Speaking JavaScript”中的“严格模式”一节。旧版/默认模式称为非严格模式草率模式

严格模式通过以下行启用(在 ES5 之前的 ECMAScript 版本中不起作用)

'use strict';

如果将此行放在文件的开头,则其中的所有代码都将处于严格模式。如果将此行设为函数的第一行,则只有该函数处于严格模式。

使用指令启用严格模式对用户不太友好,这也是严格模式在 ES5 中不像应有的那样流行的原因之一。但是,ES6 模块和类隐式地处于严格模式。鉴于大多数 ES6 代码都将存在于模块中,因此严格模式实际上成为 ES6 的默认模式。

协议

术语协议 在计算中有多种含义。在编程语言和 API 设计的上下文中,我按如下方式使用它

协议定义接口(方法和/或函数的签名)和使用规则。

其想法是指定如何执行服务。然后任何人都可以执行服务,任何人都可以请求服务,并且可以保证它们可以很好地协同工作。

请注意,此处给出的定义与将协议视为接口(例如,Objective C 所做的)不同,因为此定义包含规则。

接收器(方法调用)

给定方法调用 obj.m(···)obj 是方法调用的接收器,并且可以通过方法内部的 this 进行访问。

函数(或方法)的签名

函数的(类型)签名描述了如何调用函数,其输入和输出是什么。我在本书中使用了 Microsoft TypeScript 和 Facebook Flow 建立的语法。签名的示例

parseInt(string : string, radix? : number) : number

您可以看到 parseInt() 需要一个字符串和一个数字,并返回一个数字。如果参数的类型很明显,我通常会省略类型注释。

内部插槽

ES6 语言规范使用内部插槽 来存储内部数据。在规范中,内部插槽的访问方式就像它们是名称在方括号中的属性一样

O.[[GetPrototypeOf]]()

有两件事使它们与属性不同

如何精确存储内部插槽尚无定论。有些甚至在实际的 JavaScript 实现中可能不存在。

绑定和环境

ECMAScript 规范使用称为环境 的数据结构来存储作用域的变量。环境基本上是一个将变量名映射到值的字典。绑定 是环境中的一个条目,是变量的存储空间。

破坏性操作

破坏性操作(方法,函数)会修改其参数或其接收器。例如,push() 修改其接收器 arr

> const arr = ['a', 'b'];
> arr.push('c')
3
> arr
[ 'a', 'b', 'c' ]

相反,concat() 创建一个新的数组,并且不更改其接收器 arr

> const arr = ['a', 'b'];
> arr.concat(['c'])
[ 'a', 'b', 'c' ]
> arr
[ 'a', 'b' ]

约定

记录类

C 的 API 通常记录如下

大写

在英语中,我将 JavaScript 术语大写如下

GitHub 上的演示代码

GitHub 上的几个存储库包含本书中显示的代码

侧边栏

侧边栏是用图标标记的文本框。它们是对正常内容的补充。

脚注

有时,我会通过脚注引用(公开提供的)外部资料。两个来源在方括号中标有前缀

下一页:前言