再一次,javascript设计模式与开发实践-迭代器模式

简述

提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。

其实语言本身就内置有迭代器,例如[].forEach()等。

使用场景

  • 遍历
  • 选择加载
  • ..

案例

假如要根据浏览器的兼容不同来使用不同的上传方案,那么适合使用迭代器模式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
var getActiveObj = function () {
	try {
		return new IE();
	} catch (e) {
		return false;
	}
};

var getFlashObj = function () {
	try {
		return new Flash();
	} catch (e) {
		return false;
	}
};

var gethtmlObj = function () {
	try {
		return '<input type="file" />';
	} catch (e) {
		return false;
	}
};

var iterator = function () {
	for (var i = 0, fn; fn = arguments[i++];) {
		var obj = fn();

		if(obj) return obj;
	}
};

console.log(iterator(getActiveObj, getFlashObj, gethtmlObj));