【译】《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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技大本营的专栏

精选26个Python实用技巧,想秀技能先Get这份技术列表!

【导读】Python 虽然是脚本语言,但是因为其易学,迅速成为科学家的工具,从而积累了大量的工具库、架构,人工智能涉及大量的数据科学,用 Python 是很自然...

15650
来自专栏DannyHoo的专栏

销毁MBProgressHUD

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

12710
来自专栏程序人生

C语言中的封装 - 答读者问

写C代码的时候,最头疼的事情是哪些信息要暴露给外界,哪些隐藏在模块自身。如果不能处理好封装,那么久而久之,代码就自然演进成互相缠绕的意大利面条。 比如说在一个r...

58760
来自专栏机器学习算法与Python学习

精选26个Python实用技巧,想秀技能先Get这份技术列表!

Python 虽然是脚本语言,但是因为其易学,迅速成为科学家的工具,从而积累了大量的工具库、架构,人工智能涉及大量的数据科学,用 Python 是很自然的事。磨...

14920
来自专栏ATYUN订阅号

Jupyter Notebook最实用的5个魔术命令

Jupyter Notebook是一个基于Web的交互式工具,机器学习和数据科学社区都频繁使用它。它们用于快速测试,作为报告工具,甚至是在线课程中非常复杂的学习...

1.2K20
来自专栏ytkah

帝国cms调用栏目自定义字段(栏目简介)如何操作

  开源的cms就像一个操作系统,可以满足大部分人的需求,如果你想增加一些特殊的功能,那就二次开发呗,就像APP一样。帝国cms默认的栏目是没有调用栏目自定义字...

70980
来自专栏杨熹的专栏

2 天入门 Java-Day 1

图片来自 新生大学 公众号 今天一口气敲完了慕课网上的 《Java入门第一季》,这个课的老师讲的挺好的,视频资料做的挺用心。 课程操作界面很像 codecade...

45280
来自专栏Flutter入门到实战

那些年遇到的后台返回的奇葩json数据

然而:错误数据返回null不说,错误信息居然返回一个一个url?就这么一点错误信息,还要我再去请求一次服务器获取这个错误信息吗。。 服务器流量不要钱的吧。。。...

84630
来自专栏专知

【干货】如何写代码 -编程内功心法

写代码就是学一门语言然后开始撸代码吗?看完了我的《GoF设计模式》系列文章的同学或者本身已经就是老鸟的同学显然不会这么认为。 编程是一项非常严谨的工作!虽然我们...

36880
来自专栏程序员的诗和远方

20181104_ARTS_week19

Yarn vs npm - which Node package manager to use in 2018?

8730

扫码关注云+社区

领取腾讯云代金券