Als*_*nde 5 javascript iterator
我在Javascript中构建一个复杂的对象,我想在对象的内部集合上公开迭代器.
我能想到的唯一方法是在prototype.js中公开迭代器的常用方法:
customObject.each(function (item) { ... })
Run Code Online (Sandbox Code Playgroud)
与所提供的功能迭代器被称为每个收集,一前一后在每一个项目.
你知道其他任何可靠的方式吗?也许是一种让用户使用通常的foreach结构的方法?
原型样式函数是一个不错的选择,尽管你也可以考虑这样的事情:
overlayRegistry = function() {
var overlays = [];
var index = 0;
return {
addOverlay : function(overlay) {
overlays.push(overlay);
count : function() {
return overlays.length;
},
reset : function() {
index = 0;
},
next : function() {
if (index < overlays.length) {
return overlays[index++];
} else {
return null;
}
},
each : function (callback) {
for (var index = 0, length = overlays.length; index < length; ++index) {
callback(overlays[index]);
}
}
}
}();
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您可以在等待其他事件时逐步迭代它(如此结构背后的情况)
基本上,each如果你需要的只是简单的迭代,提供一个可以很好地工作的方法,但如果你需要更多的控制,那么上面的东西就可以了(当然,你可以做到这两点)
编辑
添加了每种方法