迭代器模式

1.内部迭代器:

/*
函数名称:$each
函数描述: 
遍历数组或对象,将内容设置为参数依次调用设置的函数;
*/
function $each(jn, fn) {
	var len = jn.length;
	if ("number" === typeof len) {
		for (var i = 0; i < len; i++) {

			var value = fn(jn[i], i,jn);
			if( value == false ){
				break;
			}

		}
	} else {
		for (var k in jn) {
			
			var value = fn(jn[k], k,jn);
			if( value == false ){
				break;
			}
			
		}
	}
}

 应用示例: 当选择是 浏览器支持的方法,选择不同的方法上传。 

二。外部迭代器

/*外部迭代器
**/
var Iterator = function( obj ) {
	var current = 0;

	var next = function(){
		current +=1;
	}
	var isDone = function(){
		return current >= obj.length;
	}
	var getCurrItem = function(){
		return obj[ current ];
	}
	return {
		next: next,
		isDone: isDone,
		getCurrItem: getCurrItem
	}
};

  

原文地址:https://www.cnblogs.com/rainbow661314/p/7088763.html