1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-24 18:32:22 +00:00

修订文字错误

This commit is contained in:
ruanyf 2014-06-05 08:40:21 +08:00
parent 8d85a96a1e
commit 75b88c3ba5
5 changed files with 20 additions and 20 deletions

View File

@ -25,9 +25,9 @@ point.toString() // (2, 3)
```
上面代码定义了一个class类可以看到里面有一个constructor函数这就是构造函数。而this关键字则代表实例对象。
上面代码定义了一个“类”可以看到里面有一个constructor函数这就是构造函数。而this关键字则代表实例对象。
class之间可以通过extends关键字实现继承。
Class之间可以通过extends关键字实现继承。
```javascript

View File

@ -2,9 +2,9 @@
## 含义
所谓Generator简单说就是一个内部状态的遍历器即每调用一次遍历器内部状态发生一次改变可以理解成发生某些事件。ES6引入了generator函数作用就是可以完全控制内部状态的变化依次遍历这些状态。
所谓Generator简单说就是一个内部状态的遍历器即每调用一次遍历器内部状态发生一次改变可以理解成发生某些事件。ES6引入Generator函数作用就是可以完全控制内部状态的变化依次遍历这些状态。
generator函数就是普通函数但是有两个特征。一是function关键字后面有一个星号二是函数体内部使用yield语句定义遍历器的每个成员即不同的内部状态yield语句在英语里的意思就是“产出”
Generator函数就是普通函数但是有两个特征。一是function关键字后面有一个星号二是函数体内部使用yield语句定义遍历器的每个成员即不同的内部状态yield语句在英语里的意思就是“产出”
```javascript
@ -17,9 +17,9 @@ var hw = helloWorldGenerator();
```
上面代码定义了一个generator函数helloWorldGenerator它的遍历器有两个成员“hello”和“world”。调用这个函数就会得到遍历器。
上面代码定义了一个Generator函数helloWorldGenerator它的遍历器有两个成员“hello”和“world”。调用这个函数就会得到遍历器。
当调用generator函数的时候该函数并不执行而是返回一个遍历器可以理解成暂停执行。以后每次调用这个遍历器的next方法就从函数体的头部或者上一次停下来的地方开始执行可以理解成恢复执行直到遇到下一个yield语句为止。也就是说next方法就是在遍历yield语句定义的内部状态。
当调用Generator函数的时候该函数并不执行而是返回一个遍历器可以理解成暂停执行。以后每次调用这个遍历器的next方法就从函数体的头部或者上一次停下来的地方开始执行可以理解成恢复执行直到遇到下一个yield语句为止。也就是说next方法就是在遍历yield语句定义的内部状态。
```javascript
@ -94,11 +94,11 @@ g.next(true) // { value: 0, done: false }
```
上面代码先定义了一个可以无限运行的generator函数f如果next方法没有参数每次运行到yield语句变量reset的值总是undefined。当next方法带一个参数true时当前的变量reset就被重置为这个参数即true因此i会等于-1下一轮循环就会从-1开始递增。
上面代码先定义了一个可以无限运行的Generator函数f如果next方法没有参数每次运行到yield语句变量reset的值总是undefined。当next方法带一个参数true时当前的变量reset就被重置为这个参数即true因此i会等于-1下一轮循环就会从-1开始递增。
## 异步操作的应用
generator函数的这种暂停执行的效果意味着可以把异步操作写在yield语句里面等到调用next方法时再往后执行。这实际上等同于不需要写回调函数了因为异步操作的后续操作可以放在yield语句下面反正要等到调用next方法时再执行。所以generator函数的一个重要实际意义就是用来处理异步操作改写回调函数。
Generator函数的这种暂停执行的效果意味着可以把异步操作写在yield语句里面等到调用next方法时再往后执行。这实际上等同于不需要写回调函数了因为异步操作的后续操作可以放在yield语句下面反正要等到调用next方法时再执行。所以Generator函数的一个重要实际意义就是用来处理异步操作改写回调函数。
```javascript
@ -147,7 +147,7 @@ function scheduler(task) {
```
注意yield语句是同步运行不是异步运行否则就失去了取代回调函数的设计目的了。实际操作中一般让yield语句返回Promises对象。
注意yield语句是同步运行不是异步运行否则就失去了取代回调函数的设计目的了。实际操作中一般让yield语句返回Promise对象。
```javascript

View File

@ -22,7 +22,7 @@ ECMAScript是JavaScript语言的国际标准JavaScript是ECMAScript的实现
2008年7月由于对于下一个版本应该包括哪些功能各方分歧太大争论过于激进ECMA开会决定中止ECMAScript 4.0的开发将其中涉及现有功能改善的一小部分发布为ECMAScript 3.1而将其他激进的设想扩大范围放入以后的版本由于会议的气氛该版本的项目代号起名为Harmony和谐。会后不久ECMAScript 3.1就改名为ECMAScript 5。
2009年12月ECMAScript 5.0版正式发布。Harmony项目则一分为二一些较为可行的设想定名为Javascript.next继续开发后来演变成ECMAScript 6一些不是很成熟的设想则被视为JavaScript.next.next在更远的将来再考虑推出。
2009年12月ECMAScript 5.0版正式发布。Harmony项目则一分为二一些较为可行的设想定名为JavaScript.next继续开发后来演变成ECMAScript 6一些不是很成熟的设想则被视为JavaScript.next.next在更远的将来再考虑推出。
2011年6月ECMAscript 5.1版发布并且成为ISO国际标准ISO/IEC 16262:2011
@ -38,9 +38,9 @@ ECMA的第39号技术专家委员会Technical Committee 39简称TC39
由于ES6还没有定案有些语法规则还会变动目前支持ES6的软件和开发环境还不多。各大浏览器的最新版本对ES6的支持可以查看[kangax.github.io/es5-compat-table/es6/](http://kangax.github.io/es5-compat-table/es6/)。
Google公司的V8引擎已经部署了ES6的部分特性。使用node.js 0.11版,就可以体验这些特性。
Google公司的V8引擎已经部署了ES6的部分特性。使用Node.js 0.11版,就可以体验这些特性。
node.js的0.11版还不是稳定版本,要使用版本管理工具[nvm](https://github.com/creationix/nvm)切换。下载nvm以后进入项目目录运行下面的命令。
Node.js的0.11版还不是稳定版本,要使用版本管理工具[nvm](https://github.com/creationix/nvm)切换。下载nvm以后进入项目目录运行下面的命令。
```bash
@ -211,7 +211,7 @@ traceur --script calc.es6.js --out calc.es5.js --experimental
**4Node.js环境的用法**
Traceur的node.js用法如下假定已安装traceur模块
Traceur的Node.js用法如下假定已安装traceur模块
```javascript

View File

@ -169,9 +169,9 @@ a["last word"] // "world"
```
## symbols
## Symbol
ES6引入了一种新的原始数据类型symbol。它通过Symbol函数生成。
ES6引入了一种新的原始数据类型Symbol。它通过Symbol函数生成。
```javascript
@ -185,11 +185,11 @@ typeof mySymbol
```
上面代码表示Symbol函数接受一个字符串作为参数用来指定生成的symbol的名称可以通过name属性读取。typeof运算符的结果表明Symbol是一种单独的数据类型。
上面代码表示Symbol函数接受一个字符串作为参数用来指定生成的Symbol的名称可以通过name属性读取。typeof运算符的结果表明Symbol是一种单独的数据类型。
注意Symbol函数前不能使用new命令否则会报错。这是因为生成的symbol是一个原始类型的值不是对象。
注意Symbol函数前不能使用new命令否则会报错。这是因为生成的Symbol是一个原始类型的值不是对象。
symbol的最大特点就是每一个symbol都是不相等的保证产生一个独一无二的值。
symbol的最大特点就是每一个Symbol都是不相等的保证产生一个独一无二的值。
```javascript
@ -240,7 +240,7 @@ a.size // 1
```
如果要在对象内部使用symbol属性名必须采用属性名表达式。
如果要在对象内部使用Symbol属性名必须采用属性名表达式。
```javascript

View File

@ -146,7 +146,7 @@ Promise.all方法用于将多个异步操作或Promise对象包装成
```javascript
// 生成一个promise对象的数组
// 生成一个Promise对象的数组
var promises = [2, 3, 5, 7, 11, 13].map(function(id){
return getJSON("/post/" + id + ".json");
});