说明

JavaScript核心语言功能定义在ECMA-262中,此标准定义的语言是ECMAScript,浏览器中的JavaScript和Node.js环境是它的超级。当浏览器与Node.js想要通过额外对象和方法增加更多的功能,其语言核心仍是在ECMAScript中定义的,这就是ECMA-262的持续发展对JavaScript整体成功至关重要的原因。

2007年,JavaScript处于十字路口。Ajax的流行使我们进入了动态web应用的新时代,然而。Javascript自从1999年发布的ECMA-262第三版后就未有变化。 负责推动ECMAScript进程的TC-39委员会, 为ECMAScript 4整合了大量草案规范。ECMAScript 4的范围很大,引入了大大小小的语言变化。 语言特性包含新的语法,模块,类,经典继承,私有对象成员,可选类型注释等等。

ECMAScript 4的范围变化在TC-39内部引发了分歧 , 一些成员认为第四版试图完成的东西太多了。一群来自雅虎、谷歌和微软的带头人为 ECMAScript的下一版本想出了另一个提议,他们最初称之为ECMAScript 3.1。“3.1” 意在表明,这是对现有标准的渐进改变。

ECMAScript 3.1引入了少量语法变化, 不着眼于property 属性,原生JSON 支持, 对已有对象添加方法。 尽管他们早期尝试调和ECMAScript 3.1 与 ECMAScript 4,最终失败了,困难在于这两大阵营在语言该如何成长上有非常不同的观点。

2008年,JavaScript的创造者 Brendan Eich宣布TC-39 会将其努力集中在ECMAScript 3.1的标准化上。他们将搁置 ECMAScript 4中主要的语法和特性变化直到ECMAScript的下一版本标准化,且委员会的所有成员将努力把ECMAScript 3.1 和4的最佳片段整合到一起,之后指向最初的成果称之为 “ECMAScript Harmony”.

ECMAScript 3.1 最终被标准化为ECMA-262的第四版, 也被称为ECMAScript 5。 委员会从未发行过ECMAScript 4标准,以避免与同名的现已不存在的成果混淆。然后开始ECMAScript Harmony的工作,ECMAScript 6成为新“和谐”精神下发行的第一个标准。

2014年,ECMAScript 6达到功能齐全的状态。 功能差别很大,从全新的对象和语法模式变化到现有对象的新方法。令人兴奋的是ECMAScript 6的所有变化都是针对开发者现实面对的问题。虽然采用和实施以达到开发者最低预期的ECMA6仍然会花费时间,对JavaScript的未来是什么样子有好的理解可以使人收获良多。

浏览器与Node.js兼容

许多Javascript环境, 比如浏览器与Node.js,事实上正致力于实现ECMAScript 6。此书并不试图解决实现之间的矛盾,而是着眼于规范定义了什么作为正确的行为。因此,你的JavaScript环境不符合此书描述的行为也是可能的。

这本书是写给谁的

这本书的目的是为那些已经熟悉JavaScript和ECMAScript 5的人作为一个指南。

深入理解这个语言的人没有必要使用此书,它有助于理解ECMAScript 5 与 6的不同之处。特别值得一提的是,这本书是针对中级到高级的想要了解此语言未来的JavaScript开发者(包括浏览器与Node.js环境)。

这本书不适合未写过JavaScript的初学者。要使用这本书,你需要对这个语言有一个良好的基本理解。

概述

Chapter 1: 基本知识 介绍了语言中最小的变化。这些新的功能没有引入语法变化,而是 ECMAScript 5之上的增量改变。

Chapter 2: 函数 讨论了各种函数的变化。包括箭头函数形式,默认参数,剩余参数等等。

Chapter 3: 对象 解释了对象如何创建、修改和使用的变化。主题包括对象直接量语法的改变和新的映射方法。

Chapter 4: 类 介绍了JavaScript中类的第一个正式的概念。JavaScript中的类对于那些来自其他语言的开发者来讲,常常会感到困惑。在JavaScript的类语法中加入之后使此语言更加平易近人且更加简洁。

Chapter 5: 数组 详述了原生数组的变化和他们可以在JavaScript中使用的新方式。

Chapter 6: 迭代器和生成器 讨论了语言添加的迭代器和生成器。 这些特性允许你以强有力的方式使用数据集合,这在JavaScript以前的版本中是不可能的。

Chapter 7: 集合 详述了新的集合类型Set, WeakSet, Map, 和WeakMap. 这些类型通过特别为JavaScript设计的添加语义、删除系统垃圾和内存管理补充了数组的用处。

Chapter 8: 符号 介绍了符号的概念,定义属性的新方式。符号是一个新的原始类型,可以用来掩盖(但不隐藏)对象的属性和方法。

Chapter 9: 代理 讨论了新的代理对象,它允许你拦截对象上执行的每一个操作。 代理给予开发者在对象上的前所未有的控制,比如,在定义新的互动模式上有了无限制的可能性。

Chapter 10: Promises 介绍了promises,作为语言的一个新部分。Promises 是基层成果,由于广泛的库支持,最终起飞并得到普及。. ECMAScript 6 规范了promises并使其默认可用。

Chapter 11: 模块 详述了JavaScript的官方模块格式。这样做的目的是,这些模块可用替代近年来出现的众多的点对点的模块定义格式。

Chapter 12: 模板字符串 讨论了新的内置模板功能。模板字符串旨在以一个安全的方式轻松地创建DSL。

Chapter 13: 映射 介绍了正式化的JavaScript映射API。与其他语言类似,ECMAScript 6 映射允许你以精确的级别检查对象,即便你没有创建对象。

帮助与支持

你可以通过访问https://github.com/nzakas/understandinges6 对这本书提出问题,建议更改,和打开pull请求。其他的事请发送消息到邮箱: http://groups.google.com/group/zakasbooks.

[译]Understanding ECMAScript 6 说明的更多相关文章

  1. [译]Understanding ECMAScript 6 内容目录

    说明 浏览器与Node.js兼容 这本书是写给谁的 概述 帮助与支持 基本知识 更好的Unicode支持 其他字符串变化 其他正则表达式变化 Object.is() 块绑定 解构赋值 数字 总结 函数 ...

  2. understanding ECMAscript 6 ---- block bindings

    Traditionally, the way variable declarations work has been one tricky part of programming in javascr ...

  3. [译]Understanding ECMAScript6 对象

    对象 ECMAScript6将大量精力聚焦在提升对象的实用性性上.聚焦的意义在于JavaScript中几乎每一个值是由对象中的某种类型表示.此外,在一个普通的JavaScript程序中使用对象的数量持 ...

  4. [译]Understanding ECMAScript6 函数

    函数 函数是任何编程语言的重要组成部分,而自从JavaScript被引入以来,JavaScript的函数就未有太多改变.遗留下来的积压问题及微妙行为使我们很容易犯错误,或者需要更多的代码来实现一个非常 ...

  5. [译]Understanding ECMAScript6 基本知识

    基本知识 ECMAScript 6在ECMAScript 5之上做了大量的改变.一些改变很大,比如添加新的类型或者语法,而其它的非常小,提供了语言之上的渐进改进.这个章节包含了那些渐进改进,它们可能不 ...

  6. 试译 Understanding Delta-Sigma Modulators

         接触Σ-Δ调制的时候发现国内有关的资料比较匮乏,因为缺乏了解还有一些人把其中的原理吹得神乎其神难以理解.其实Σ-Δ调制的原理是很简单.逻辑上很自然的,可以定性理解成传统ADC/DAC量化的是 ...

  7. [译]Understanding ECMAScript6 迭代器与生成器(未完)

    迭代器在许多编程语言中被作为一种更易处理数据集合的方式被使用.在ECMAScript6中,JavaScript添加了迭代器,将其作为此语言的一个重要特征.当再加上新的方法和新的集合类型(比如集合与映射 ...

  8. Understanding ECMAScript 6 阅读问题小记

    拖了一年说要看这本书,一直都没坚持下来,开个 bo 记录下觉得疑惑的问题,也算鞭策一下自己. 第一章 块级绑定 1. 第一章“块级绑定”下,说 const 变量如果绑定的是对象 Object,那么修改 ...

  9. ECMAScript 6十大特性

    ES6入门 http://es6.ruanyifeng.com/ ES6排名前十的最佳特性列表 Default Parameters(默认参数) in ES6 Template Literals (模 ...

随机推荐

  1. ModuleNotFoundError: No module named 'numpy.core._multiarray_umath' ImportError: numpy.core.multiarray failed to import

      出现以下错误:可能是因为你的numpy版本太低 更新numpy的版本 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgra ...

  2. PYTHON 爬虫笔记三:Requests库的基本使用

    知识点一:Requests的详解及其基本使用方法 什么是requests库 Requests库是用Python编写的,基于urllib,采用Apache2 Licensed开源协议的HTTP库,相比u ...

  3. html5--3.6 input元素(5)

    html5--3.6 input元素(5) 学习要点 input元素及其属性 input元素 用来设置表单中的内容项,比如输入内容的文本框,按钮等 不仅可以布置在表单中,也可以在表单之外的元素使用 i ...

  4. 【C/C++】malloc()

    <math.h>文件中对malloc()函数原型: _CRTIMP void *  __cdecl malloc(size_t); MSDN中对malloc()的解释: malloc re ...

  5. .html 页面修改成 .jsp 后缀后中文乱码解决办法。

    .html 后缀的文件,如果直接将 .html后缀改成 .jsp 后缀,则会乱码. 正确方法如下: 将如图的代码中 html  声明去掉,然后加上这段代码:<%@ page language=& ...

  6. 「HNOI2004」「LuoguP2292」L语言(AC自动机

    题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构成.一个单词W也是由若干小写字母构成.一个字典D是若干个单词的 ...

  7. 洛谷 P4660 & bzoj 1168 [ Baltic OI 2008 ] 手套 —— 分析+单调栈

    题目:https://www.luogu.org/record/show?rid=12702916 https://www.lydsy.com/JudgeOnline/problem.php?id=1 ...

  8. error:对‘vtable for new_sequence’未定义的引用 对‘typeinfo for num_sequence’未定义的引用

    在设计父类子类继承关系中,经常会出现此类问题. 报错原因:父类中的虚函数只有声明,没有定义. 解决方案 : 1. 定义相关的虚函数的实现. 2. 不实现了,直接搞成纯虚函数留给后代实现. virtua ...

  9. linux中消息队列<一>

    1 概念 (1)链表式结构组织,存放于内核. (2)通过队列标识来引用. (3)通过一个消息类型来索引指定的数据 2 创建消息队列 #include <sys/msg.h> int msg ...

  10. 极客时间_Vue开发实战_06.Vue组件的核心概念(2):事件

    06.Vue组件的核心概念(2):事件 通过emit传递给父组件 我们点击了重置失败,上层的div的click=handleDivClick是接收不到.重置失败的点击的行为的 通常情况下,你不用.st ...