在这里,我们最后再看一个关于闭包应用的示例----迭代器。
通常情况下,我们都知道如何用循环来遍历一个简单的数组,但是有时候我们需要面对更复杂的数据结构,它们通常会有着与数组截然不同的序列规则。这时候就需要将一些“谁是下一个”的复杂逻辑封装成易于使用的 next( ) 函数,然后,我们只需要简单的调用 next( ) 就能实现对于相关的遍历操作了。
在下面的例子中,我们将依然通过简单数组,而不是复杂的数据结构来说明问题。该例子是一个接受数组输入的初始化函数,我们在其中定义了一个私有指针 i ,该指针会始终指向数组中的下一个元素:
function setup(x){
var i = 0;
return function(){
return x[i++];
}
};现在,我们只需用一组数据来调用一下 setup( ),就可以创建出我们所需要的 next( ) 函数:
var next = setup([1,2,3]);
//调用一下
next(); //1
next(); //2
next(); //3这是一种既简单又好玩的循环形式,我们只需重复调用一个函数,就可以不停的获取下一个元素。
本文摘自《JavaScript面向对象编程指南》,分享的目的仅供个人学习和理解,如需转载请备注本文出处,谢谢!