【译】《Understanding ECMAScript6》- 简介

原书线上阅读地址https://leanpub.com/understandinges6/read/

JavaScript又称为ECMAScript,其核心功能遵循ECMA-262规范,浏览器环境JavaScript与Node.js的JavaScript是ECMAScript的两个超集。即使浏览器和Node.js通过扩展对象和函数来增加新功能,但语言仍然保留ECMAScript的核心功能,所以ECMA-262的发展对JavaScript语言是至关重要的。

2007年是JavaScript发展的分水岭。Ajax的流行使web应用拥有了丰富的动态性,而截止至当时,自1999年制定ECMA-262的第三版规范,JavaScript没有任何发展。随后,TC-39委员为了促成ECMAScript 4(简称ES4)规范,制定了大量的新规范草案,包括新的语法、模块、类、类式继承、对象私有变量,以及可选类型注释等等。

由于ES4草案的改动过于庞大,TC-39组织内部产生了分歧。部分成员认为ES4的改动太多难以实现。来自Yahoo、Google和微软的核心成员商议出一套替代方案,命名为ECMAScript 3.1,预示此版本是现有ES3规范的递增版本。

ES3.1引入了非常少量的语法修改,而是专注于属性的修改、原生JSON的支持和为现存对象添加新方法。虽然规范制定组织尝试统一ES3.1和ES4的发展趋势,但由于组织内部两个阵营对语言发展方向有根本性的分歧,这样的尝试终归失败了。

2008年,JavaScript的创始人Brendan Eich宣布TC-39组织将工作集中于推进ES3.1的标准化。并且在ECMAScript下个标准化版本面世之前暂时搁置ES4的语法和功能修改。组织的所有成员将致力于融合ES3.1和ES4的精华部分,取名ECMAScript Harmony(寓意和谐)。

随后,ES3.1发展成为了ECMA-262规范的第五个版本,也就是ES5。TC-39组织将会封存ES4标准以避免与现有规范的冲突,转而将工作集中于ECMAScript Harmony上,ECMAScript 6(简称ES6)便是在这种“和谐”精神下诞生的第一个产物。

ES6于2014年定稿,此次规范的修改非常宽泛,涉及新对象、模式、语法、以及现有对象的扩展等等。这些改动致力于解决目前开发者们遇到的实际问题。从市场环境来看,ES6投入开发使用之前仍然需要很长时间等待浏览器完善;并且从开发者角度,仍然缺乏对ES6新功能的深入理解。

浏览器和Node.js的兼容性

最为JavaScript最主要的运行环境,web浏览器和Node.js在不断完善对ES6的支持。本书不会细究运行环境的冲突及兼容性,而是重点讲解规范的细则。因此,读者所用的JavaScript运行环境可能会存在与规范不同的地方。

本书适用人群

本书适用于对JavaScript和ES5有一定了解的读者。对JavaScript语言深层机制的了解有助于理解ES5和ES6的区别。如果您是JavaScript的中高级开发人员,并且对语言的未来有期望的话,本书将是您很好的选择。

本书并不适用于对JavaScript不了解的读者。

概览

第一章: 基础知识,主要介绍语言的一些细微改动。ES6中的一些新功能不涉及语法的改动,相当于ES5的增量功能。

第二章: 函数,介绍各种函数有关的改动,包括箭头函数(arrow function form)、默认值参数(default parameters)、剩余参数(rest parameters)等等。

第三章: 对象,介绍对象在创建、修改和使用中的一些改动。包括语法的改动,以及最新的Reflection API。

第四章: Symbols,介绍Symbols类型的概念,以及一种定义属性的全新方式。Symbols是一种原始类型,可以用来掩盖(不是隐藏)对象的属性和方法。

第五章: 数组,介绍现有数组的改动和一些有趣的新方法。

第六章: 集合类型,介绍ES6引入的集合类型,比如setWeakSetMapWeakMap。集合类型通过语义强化、删除重复内容和内存管理的方式对数组类型做了增强和扩展。

第七章: ,JavaScript正式引入类的概念。为了避免其他语言使用者对此的困惑,JavaScript类的语法非常简明易懂。

第八章: 迭代器和生成器,ES6引入迭代器和生成器的概念,通过迭代器和生成器,可以更有效的处理数据。

第九章: 代理,ES6新加入的代理对象,通过代理对象可以打断一个对象任何正在执行的操作。代理模式使开发者更加灵活地操作对象,并且可以在此基础上探索各种新型的交互模式。

第十章: Promises,Promise对象用来进行延迟和异步运算,现已被大量的第三方框架支持。ES6将其标准化并加入语言特性。

第十一章: 模块,JavaScript中正式加入模块的概念,目前大量且不统一的模块应用规范将会被ES6规范取代。

第十二章: 模板字符串,模板功能可以令开发者用相对安全的方法创建DSL(Domain Specific Language,领域专用语言)。

第十三章: Reflection,ES6新加入的reflection API可以令对象的解析精细到粒度级别。

帮助和支持

您可以在GitHub提交issue、意见和pull request:https://github.com/nzakas/understandinges6

如果有其他疑问,可以访问以下地址进行反馈:http://groups.google.com/group/zakasbooks

posted @ 2015-10-20 11:23  JunpengZ  阅读(1027)  评论(0编辑  收藏  举报