mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2024-04-21 12:32:22 +00:00
docs(generator): edit Symbol.iterator
This commit is contained in:
+17
-2
@@ -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(){
|
||||
|
||||
Reference in New Issue
Block a user