[译]理解 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.

时间: 2024-07-31 10:54:26

[译]理解 ECMAScript 6 说明的相关文章

[译]理解 ECMAScript 6 基本知识(未完)

基本知识 ECMAScript 6在ECMAScript 5之上做了大量的改变.一些改变很大,比如添加新的类型或者语法,而其它的非常小,提供了语言之上的渐进改进.这个章节包含了那些渐进改进,它们可能不会获得很多关注但提供了一些重要的功能,使得某些类型的问题更容易解决. 更好的Unicode支持 ECMAScript 6之前, JavaScript是完全基于16位字符编码的想法.所有的字符串属性和方法,比如length与charAt() ,是基于每一个16位序列表示一个字符这一想法.ECMAScr

[译]理解 ECMAScript 6 内容目录

说明 浏览器与Node.js兼容 这本书是写给谁的 概述 帮助与支持 基本知识 更好的Unicode支持 其他字符串变化 其他正则表达式变化 Object.is() Block绑定 解构赋值 Numbers 总结 函数 默认参数 其他参数 变性参数 Spread运算符 name属性 块级方法 箭头函数 语法 总结 对象 对象类别 对象Literal 扩展 Object.assign() 复制对象Literal 属性 proto, Object.setPrototypeOf() super 映射方

【转】[译]理解HTTP/304响应

[转][译]理解HTTP/304响应 原文:http://www.telerik.com/automated-testing-tools/blog/eric-lawrence/12-11-06/understanding-http-304-responses.aspx 刚刚开始使用Fiddler的用户经常会对Fiddler的网络会话(Web Sessions)列表中的HTTP/304响应感到困惑: 如果客户端发送的是一个条件验证(Conditional Validation)请求,则web服务器

理解ECMAScript的几个关键语句

写在前面 在这一章中我们聊一聊ECMAScript中的几个关键语句switch.for-in.label等语句,加深我们对它们的理解和认识.首先从最常见的说起. while和for while和for是很常规的语句,无论是在JavaScript还是C还是其他编程语言中.而且在编程中我们较常用的也是for,for用起来更灵活,更简单,所以有些人可能就会产生这样一种误解: for比while更强大,能做到while做不到的一些事情. 其实我们稍微想想while和for语句的语法应用,我们就会发现:

[译] 理解PHP内部函数的定义(给PHP开发者的PHP源码-第二部分)

文章来自:http://www.aintnot.com/2016/02/10/understanding-phps-internal-function-definitions-ch 原文:https://nikic.github.io/2012/03/16/Understanding-PHPs-internal-function-definitions.html 欢迎来到"给PHP开发者的PHP源码"系列的第二部分. 在上一篇中,ircmaxell说明了你可以在哪里找到PHP的源码,它

[译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)

文章来自:http://www.aintnot.com/2016/02/15/understanding-phps-internal-array-implementation-ch 原文:https://nikic.github.io/2012/03/28/Understanding-PHPs-internal-array-implementation.html 欢迎来到"给PHP开发者的PHP源码"系列的第四部分,这一部分我们会谈论PHP数组在内部是如何表示和在代码库里使用的. 为了

js面向对象深入理解

js面向对象深入理解 ECMAScript 有两种开发模式:1.函数式(过程化),2.面向对象(OOP).面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.但是,ECMAScript 没有类的概念,因此它的对象也与基于类的语言中的对象有所不同. 一.创建对象 创建一个对象,然后给这个对象新建属性和方法. var box = new Object(); //创建一个Object 对象 box.name = 'Lee'; //创建一个name 属性并赋值 b

深入理解JavaScript系列(16):闭包(Closures)

介绍 本章我们将介绍在JavaScript里大家常常来讨论的话题 -- 闭包(closure).闭包事实上大家都已经谈烂了.虽然如此,这里还是要试着从理论角度来讨论下闭包,看看ECMAScript中的闭包内部到底是怎样工作的. 正如在前面的文章中提到的.这些文章都是系列文章,相互之间都是有关联的.因此.为了更好的理解本文要介绍的内容,建议先去阅读第14章作用域链和第12章变量对象. 英文原文:http://dmitrysoshnikov.com/ecmascript/chapter-6-clos

深入理解JavaScript系列(15):函数(Functions)

介绍 本章节我们要着重介绍的是一个非常常见的ECMAScript对象——函数(function),我们将详细讲解一下各种类型的函数是如何影响上下文的变量对象以及每个函数的作用域链都包含什么,以及回答诸如像下面这样的问题:下面声明的函数有什么区别么?(如果有,区别是什么). 原文:http://dmitrysoshnikov.com/ecmascript/chapter-5-functions/ var foo = function () { ... }; 平时的惯用方式: function fo