iterator(2)

 1 var it = makeIterator(['a', 'b']);
 2 
 3 it.next() // { value: "a", done: false }
 4 it.next() // { value: "b", done: false }
 5 it.next() // { value: undefined, done: true }
 6 
 7 function makeIterator(array) {
 8   var nextIndex = 0;
 9   return {
10     next: function() {
11       return nextIndex < array.length ?
12         {value: array[nextIndex++], done: false} :
13         {value: undefined, done: true};
14     }
15   };
16 }

makeIterator函数

参数:数组

处理:
返回:对象

该对象如下:

1 {
2     next: function() {
3       return nextIndex < array.length ?
4         {value: array[nextIndex++], done: false} :
5         {value: undefined, done: true};
6     }
7   };

此对象叫做指针对象。

指针对象包含一个属性,属性名是next,属性值是函数。

简称为next函数,该函数如上所示:
返回一个对象。叫元素对象吧。

元素对象包含两个属性:value和done。

如果调用next方法,it.next(),这个()代表调用。

就返回元素对象。

所以饶了这么一大圈还是要返回元素对象。

给makeIterator函数传入数组,它会返回一个指针对象it。

it中有个方法叫next。

既然是方法就可以被调用,it.next()。

被调用后返回元素对象。{value : "a",done : false}

原文地址:https://www.cnblogs.com/flyover/p/14133353.html