[译]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 (模 ...
随机推荐
- python 实用pickle序列化
存储数据结构到一个文件中称为序列化.相json这样的格式需要定制的序列化数据的转换器.python提供了pickle模块以特殊的二进制格式保存和恢复数据对象. 还记得json解析datetime对象时 ...
- Jquery form表单提交
起因 由于项目中原先提交from是通过JavaScript指定action,在submit提交的,使用的方式,也不是很标准,造成除了ie之外的浏览器都不能正常的提交数据,做web项目还是要考虑到浏览器 ...
- Android Jni(Java Native Interface)笔记
首先记录一个问题,关于如何用javah生成头文件. 为什么要生成头文件?在含有 static{ System.loadLibrary("hellojni"); } 这样代码的类下面 ...
- 洛谷 P4245 [模板]任意模数NTT —— 三模数NTT / 拆系数FFT(MTT)
题目:https://www.luogu.org/problemnew/show/P4245 用三模数NTT做,需要注意时间和细节: 注意各种地方要取模!传入 upt() 里面的数一定要不超过2倍 m ...
- python下载各大主流视频网站电影
You-Get 是一个命令行工具, 用来下载各大视频网站的视频, 是我目前知道的命令行下载工具中最好的一个, 之前使用过 youtube-dl, 但是 youtube-dl 吧, 下载好的视频是分段的 ...
- YouTube视频签名加密算法的破解
密码学方法 多年以前,YouTube的视频源地址是直接encode在页面中的,你甚至可以用一行Perl来下载它们. 直到2012年8月,这个简单的脚本(用在0.0.1版本的You-Get中)仍然可以解 ...
- Coloring Brackets
题意: 给一匹配的括号序列,要求每对括号恰有一个被染成蓝或红色,要求相邻的括号不同色,求方案数. 解法: 类比树的hash将括号序列转化为一棵树,树上子节点之间不得出现冲突, 子节点和父节点不得出现冲 ...
- 爬虫库之BeautifulSoup学习(一)
Beautiful Soup的简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据. 官方解释如下: Beautiful Soup提供一些简单的.pytho ...
- 3、css边框以及其他常用样式
一.边框 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- 20个Flutter实例视频教程-第06节: 酷炫的路由动画-2
博客地址: https://jspang.com/post/flutterDemo.html#toc-94f 视频地址: https://jspang.com/post/flutterDemo.htm ...