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}