[译]Understanding ECMAScript 6 说明
说明
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 说明的更多相关文章
- [译]Understanding ECMAScript 6 内容目录
说明 浏览器与Node.js兼容 这本书是写给谁的 概述 帮助与支持 基本知识 更好的Unicode支持 其他字符串变化 其他正则表达式变化 Object.is() 块绑定 解构赋值 数字 总结 函数 ...
- understanding ECMAscript 6 ---- block bindings
Traditionally, the way variable declarations work has been one tricky part of programming in javascr ...
- [译]Understanding ECMAScript6 对象
对象 ECMAScript6将大量精力聚焦在提升对象的实用性性上.聚焦的意义在于JavaScript中几乎每一个值是由对象中的某种类型表示.此外,在一个普通的JavaScript程序中使用对象的数量持 ...
- [译]Understanding ECMAScript6 函数
函数 函数是任何编程语言的重要组成部分,而自从JavaScript被引入以来,JavaScript的函数就未有太多改变.遗留下来的积压问题及微妙行为使我们很容易犯错误,或者需要更多的代码来实现一个非常 ...
- [译]Understanding ECMAScript6 基本知识
基本知识 ECMAScript 6在ECMAScript 5之上做了大量的改变.一些改变很大,比如添加新的类型或者语法,而其它的非常小,提供了语言之上的渐进改进.这个章节包含了那些渐进改进,它们可能不 ...
- 试译 Understanding Delta-Sigma Modulators
接触Σ-Δ调制的时候发现国内有关的资料比较匮乏,因为缺乏了解还有一些人把其中的原理吹得神乎其神难以理解.其实Σ-Δ调制的原理是很简单.逻辑上很自然的,可以定性理解成传统ADC/DAC量化的是 ...
- [译]Understanding ECMAScript6 迭代器与生成器(未完)
迭代器在许多编程语言中被作为一种更易处理数据集合的方式被使用.在ECMAScript6中,JavaScript添加了迭代器,将其作为此语言的一个重要特征.当再加上新的方法和新的集合类型(比如集合与映射 ...
- Understanding ECMAScript 6 阅读问题小记
拖了一年说要看这本书,一直都没坚持下来,开个 bo 记录下觉得疑惑的问题,也算鞭策一下自己. 第一章 块级绑定 1. 第一章“块级绑定”下,说 const 变量如果绑定的是对象 Object,那么修改 ...
- ECMAScript 6十大特性
ES6入门 http://es6.ruanyifeng.com/ ES6排名前十的最佳特性列表 Default Parameters(默认参数) in ES6 Template Literals (模 ...
随机推荐
- 程序移植到VS2010,编译成功但是无法启动lib文件
今天遇到的这个问题,是由于解决方案下有多个项目,其中包含生成库的项目,也有可执行程序的项目 解决方法:邮件解决方案,属性-通用属性-启动项目进行设置就OK了,我的是设置单启动项目为包含可执行程序的项目 ...
- BZOJ1566 【NOI2009】管道取珠
题面 这是一道DP神题,直到我写下这句题解时也没有想明白…… 首先,这道题要我们求所有(不同输出序列的方案数)的平方和,于是我们当然就想到求所有不同输出序列的方案数……(大雾) .这道题一个巧妙的地方 ...
- Android Studio 使用Gradle多渠道打包
第一步:配置AndroidManifest.xml 以友盟渠道为例,渠道信息一般都是写在 AndroidManifest.xml文件中,大约如下: <meta-data android:name ...
- Python: PS 滤镜--水波特效
本文用 Python 实现 PS 滤镜中的 水波特效 import numpy as np from skimage import img_as_float import matplotlib.pyp ...
- [转载]支付宝钱包手势密码破解实战(root过的手机可直接绕过手势密码)
/* *转自http://blog.csdn.net/hu3167343/article/details/36418063 *本文章由 莫灰灰 编写,转载请注明出处. *作者:莫灰灰 邮箱: m ...
- java.io.FileNotFoundException:/mnt/sdcard/......(Permission denied)
今天在实现下载模块的时候,从服务器下载apk安装的时候总是不成功. 打开LogCat查看日志,发现在访问sdcard的时候出现Permission denied的情况. 百度之后发现原因是没有添加权限 ...
- 4.13 BJ集训
T1 Mobitel 题目大意: 一个全是正整数的矩阵,求从左上角到右下角的简单路径有多少条路径上数的乘积$>=K$ 思路: 由于整数分块,我们设$f(i,j,k)$表示走到$(i,j)$,$k ...
- 推荐 BI Work
推荐阅读 BI Work 的文章,作为学习用 http://www.cnblogs.com/biwork
- mina框架之---服务端NioSocketAcceptor的学习
接上一讲对mina的简单应用和对mina服务端和客户端中几个重要的技术知识点的理解后,今天着重对mina服务端的NioSocketAcceptor 进行学习. 说这个玩意之前,先整体上看一下在mina ...
- (转)data Table的用法大全
jqyery dataTable 基本用法 一:官方网站:[http://www.datatables.net/] 二:基本使用:[http://www.guoxk.com/node/jquery-d ...