迭代器模式是指提供一种方法顺利访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。
迭代器我们常见的Jquery的$.each、lodash的_.each,下面看一下如何实现一个迭代器:
function each(obj, callback) {
var value,
i = 0;
length = obj.length,
isArray = Object.prototype.toString.call(obj) === '[object Array]';
if (isArray) {
for (; i < length; i++) {
value = callback.call(obj[i], i, obj[i]);
if (value === false) {
break;
}
}
} else {
for (i in obj) {
value = callback.call(obj[i], i, obj[i]);
if (value === false) {
break;
}
}
}
return obj;
}
each([1, 2, 3], (index, item) => {
console.log('数组迭代:', index, item);
});
each([1, 2, 3], (index, item) => {
if (item === 2) {
return false;
}
console.log('数组迭代:', index, item);
});
each({ name: 'zhangfu', age: 26 }, (index, item) => {
console.log('对象迭代:', index, item);
});
/**
数组迭代: 0 1
数组迭代: 1 2
数组迭代: 2 3
数组迭代: 0 1
对象迭代: name zhangfu
对象迭代: age 26
**/
上面就是一个简单的迭代器,迭代模式比较简单很多时候并不被认为是一种模式。
网友评论