From 5bda2fdb53082132005d6c87463b756cc6c95e89 Mon Sep 17 00:00:00 2001 From: zhangbao Date: Tue, 26 Dec 2017 09:03:51 +0800 Subject: [PATCH 1/3] docs:Fix typo The type of `value` is number, not string. --- docs/iterator.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/iterator.md b/docs/iterator.md index 60d193d..30c2e55 100644 --- a/docs/iterator.md +++ b/docs/iterator.md @@ -69,9 +69,9 @@ function makeIterator(array) { ```javascript var it = idMaker(); -it.next().value // '0' -it.next().value // '1' -it.next().value // '2' +it.next().value // 0 +it.next().value // 1 +it.next().value // 2 // ... function idMaker() { From 311cfaa50d93a50ca601de8dca5b4c916dccee09 Mon Sep 17 00:00:00 2001 From: zhangbao Date: Tue, 26 Dec 2017 10:55:39 +0800 Subject: [PATCH 2/3] =?UTF-8?q?Fix=EF=BC=9A=E7=BB=9F=E4=B8=80=E4=BE=8B?= =?UTF-8?q?=E5=AD=90=E4=B8=AD=E7=9A=84=E4=BB=A3=E7=A0=81=E9=A3=8E=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 更能清晰地分辨出是对象字面量声明中的方法简写 --- docs/iterator.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/iterator.md b/docs/iterator.md index 60d193d..d64aea2 100644 --- a/docs/iterator.md +++ b/docs/iterator.md @@ -444,13 +444,13 @@ str // "hi" `Symbol.iterator`方法的最简单实现,还是使用下一章要介绍的 Generator 函数。 ```javascript -var myIterable = {}; - -myIterable[Symbol.iterator] = function* () { - yield 1; - yield 2; - yield 3; -}; +let myIterable = { + [Symbol.iterator]: function* () { + yield 1; + yield 2; + yield 3; + } +} [...myIterable] // [1, 2, 3] // 或者采用下面的简洁写法 @@ -465,8 +465,8 @@ let obj = { for (let x of obj) { console.log(x); } -// hello -// world +// "hello" +// "world" ``` 上面代码中,`Symbol.iterator`方法几乎不用部署任何代码,只要用 yield 命令给出每一步的返回值即可。 From 6b647bd7d7f6f254941a9477ab2938b20bbade57 Mon Sep 17 00:00:00 2001 From: zhangbao Date: Tue, 26 Dec 2017 11:11:47 +0800 Subject: [PATCH 3/3] Fix typo --- docs/iterator.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/iterator.md b/docs/iterator.md index 60d193d..5f81460 100644 --- a/docs/iterator.md +++ b/docs/iterator.md @@ -108,9 +108,9 @@ interface IterationResult { Iterator 接口的目的,就是为所有数据结构,提供了一种统一的访问机制,即`for...of`循环(详见下文)。当使用`for...of`循环遍历某种数据结构时,该循环会自动去寻找 Iterator 接口。 -一种数据结构只要部署了 Iterator 接口,我们就称这种数据结构是”可遍历的“(iterable)。 +一种数据结构只要部署了 Iterator 接口,我们就称这种数据结构是“可遍历的”(iterable)。 -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》一章)。 ```javascript const obj = { @@ -573,7 +573,7 @@ for (let a of arr) { } ``` -上面代码表明,`for...in`循环读取键名,`for...of`循环读取键值。如果要通过`for...of`循环,获取数组的索引,可以借助数组实例的`entries`方法和`keys`方法,参见《数组的扩展》章节。 +上面代码表明,`for...in`循环读取键名,`for...of`循环读取键值。如果要通过`for...of`循环,获取数组的索引,可以借助数组实例的`entries`方法和`keys`方法(参见《数组的扩展》一章)。 `for...of`循环调用遍历器接口,数组的遍历器接口只返回具有数字索引的属性。这一点跟`for...in`循环也不一样。