@@ -69,9 +69,9 @@ function makeIterator(array) {
69
69
``` javascript
70
70
var it = idMaker ();
71
71
72
- it .next ().value // '0'
73
- it .next ().value // '1'
74
- it .next ().value // '2'
72
+ it .next ().value // 0
73
+ it .next ().value // 1
74
+ it .next ().value // 2
75
75
// ...
76
76
77
77
function idMaker () {
@@ -108,9 +108,9 @@ interface IterationResult {
108
108
109
109
Iterator 接口的目的,就是为所有数据结构,提供了一种统一的访问机制,即` for...of ` 循环(详见下文)。当使用` for...of ` 循环遍历某种数据结构时,该循环会自动去寻找 Iterator 接口。
110
110
111
- 一种数据结构只要部署了 Iterator 接口,我们就称这种数据结构是”可遍历的“ (iterable)。
111
+ 一种数据结构只要部署了 Iterator 接口,我们就称这种数据结构是“可遍历的” (iterable)。
112
112
113
- ES6 规定,默认的 Iterator 接口部署在数据结构的` Symbol.iterator ` 属性,或者说,一个数据结构只要具有` Symbol.iterator ` 属性,就可以认为是“可遍历的”(iterable)。` Symbol.iterator ` 属性本身是一个函数,就是当前数据结构默认的遍历器生成函数。执行这个函数,就会返回一个遍历器。至于属性名` Symbol.iterator ` ,它是一个表达式,返回` Symbol ` 对象的` iterator ` 属性,这是一个预定义好的、类型为 Symbol 的特殊值,所以要放在方括号内(参见 Symbol 一章)。
113
+ ES6 规定,默认的 Iterator 接口部署在数据结构的` Symbol.iterator ` 属性,或者说,一个数据结构只要具有` Symbol.iterator ` 属性,就可以认为是“可遍历的”(iterable)。` Symbol.iterator ` 属性本身是一个函数,就是当前数据结构默认的遍历器生成函数。执行这个函数,就会返回一个遍历器。至于属性名` Symbol.iterator ` ,它是一个表达式,返回` Symbol ` 对象的` iterator ` 属性,这是一个预定义好的、类型为 Symbol 的特殊值,所以要放在方括号内(参见《 Symbol》 一章)。
114
114
115
115
``` javascript
116
116
const obj = {
@@ -444,13 +444,13 @@ str // "hi"
444
444
` Symbol.iterator ` 方法的最简单实现,还是使用下一章要介绍的 Generator 函数。
445
445
446
446
``` javascript
447
- var myIterable = {};
448
-
449
- myIterable[ Symbol . iterator ] = function * () {
450
- yield 1 ;
451
- yield 2 ;
452
- yield 3 ;
453
- };
447
+ let myIterable = {
448
+ [ Symbol . iterator ] : function * () {
449
+ yield 1 ;
450
+ yield 2 ;
451
+ yield 3 ;
452
+ }
453
+ }
454
454
[... myIterable] // [1, 2, 3]
455
455
456
456
// 或者采用下面的简洁写法
@@ -465,8 +465,8 @@ let obj = {
465
465
for (let x of obj) {
466
466
console .log (x);
467
467
}
468
- // hello
469
- // world
468
+ // " hello"
469
+ // " world"
470
470
```
471
471
472
472
上面代码中,` Symbol.iterator ` 方法几乎不用部署任何代码,只要用 yield 命令给出每一步的返回值即可。
@@ -573,7 +573,7 @@ for (let a of arr) {
573
573
}
574
574
```
575
575
576
- 上面代码表明,` for...in ` 循环读取键名,` for...of ` 循环读取键值。如果要通过` for...of ` 循环,获取数组的索引,可以借助数组实例的` entries ` 方法和` keys ` 方法, 参见《数组的扩展》章节 。
576
+ 上面代码表明,` for...in ` 循环读取键名,` for...of ` 循环读取键值。如果要通过` for...of ` 循环,获取数组的索引,可以借助数组实例的` entries ` 方法和` keys ` 方法( 参见《数组的扩展》一章) 。
577
577
578
578
` for...of ` 循环调用遍历器接口,数组的遍历器接口只返回具有数字索引的属性。这一点跟` for...in ` 循环也不一样。
579
579
0 commit comments