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

docs(generator): edit Symbol.iterator

This commit is contained in:
ruanyf 2016-05-02 10:22:18 +08:00
parent adefd4c365
commit 7d57425beb
3 changed files with 32 additions and 4 deletions

View File

@ -183,9 +183,24 @@ let input = yield; // OK
### 与Iterator接口的关系
上一章说过,任意一个对象的`Symbol.iterator`方法,等于该对象的遍历器对象生成函数,调用该函数会返回该对象的一个遍历器对象。
上一章说过,任意一个对象的`Symbol.iterator`方法,等于该对象的遍历器生成函数,调用该函数会返回该对象的一个遍历器对象。
遍历器对象本身也有`Symbol.iterator`方法,执行后返回自身。
由于Generator函数就是遍历器生成函数因此可以把Generator赋值给对象的`Symbol.iterator`属性从而使得该对象具有Iterator接口。
```javascript
var myIterable = {};
myIterable[Symbol.iterator] = function* () {
yield 1;
yield 2;
yield 3;
};
[...myIterable] // [1, 2, 3]
```
上面代码中Generator函数赋值给`Symbol.iterator`属性,从而使得`myIterable`对象具有了Iterator接口可以被`...`运算符遍历了。
Generator函数执行后返回一个遍历器对象。该对象本身也具有`Symbol.iterator`属性,执行后返回自身。
```javascript
function* gen(){

View File

@ -110,7 +110,7 @@ interface IterationResult {
Iterator接口的目的就是为所有数据结构提供了一种统一的访问机制`for...of`循环(详见下文)。当使用`for...of`循环遍历某种数据结构时该循环会自动去寻找Iterator接口。
ES6规定默认的Iterator接口部署在数据结构的`Symbol.iterator`属性,或者说,一个数据结构只要具有`Symbol.iterator`属性就可以认为是“可遍历的”iterable。调用`Symbol.iterator`方法,就会得到当前数据结构默认的遍历器生成函数。`Symbol.iterator`本身是一个表达式返回Symbol对象的iterator属性这是一个预定义好的、类型为Symbol的特殊值所以要放在方括号内请参考Symbol一章
ES6规定默认的Iterator接口部署在数据结构的`Symbol.iterator`属性,或者说,一个数据结构只要具有`Symbol.iterator`属性就可以认为是“可遍历的”iterable。调用`Symbol.iterator`方法,就会得到当前数据结构默认的遍历器生成函数。`Symbol.iterator`本身是一个表达式返回Symbol对象的`iterator`属性这是一个预定义好的、类型为Symbol的特殊值所以要放在方括号内请参考Symbol一章
在ES6中有三类数据结构原生具备Iterator接口数组、某些类似数组的对象、Set和Map结构。

View File

@ -517,7 +517,20 @@ separator[Symbol.split](this, limit)
### Symbol.iterator
对象的Symbol.iterator属性指向该对象的默认遍历器方法即该对象进行for...of循环时会调用这个方法返回该对象的默认遍历器详细介绍参见《Iterator和for...of循环》一章。
对象的`Symbol.iterator`属性,指向该对象的默认遍历器方法。
```javascript
var myIterable = {};
myIterable[Symbol.iterator] = function* () {
yield 1;
yield 2;
yield 3;
};
[...myIterable] // [1, 2, 3]
```
对象进行`for...of`循环时,会调用`Symbol.iterator`方法返回该对象的默认遍历器详细介绍参见《Iterator和for...of循环》一章。
```javascript
class Collection {