在javascript中编码迭代器的最佳方法

Als*_*nde 5 javascript iterator

我在Javascript中构建一个复杂的对象,我想在对象的内部集合上公开迭代器.

我能想到的唯一方法是在prototype.js中公开迭代器的常用方法:

customObject.each(function (item) { ... })
Run Code Online (Sandbox Code Playgroud)

与所提供的功能迭代器被称为每个收集,一前一后在每一个项目.

你知道其他任何可靠的方式吗?也许是一种让用户使用通常的foreach结构的方法?

Jon*_*and 6

原型样式函数是一个不错的选择,尽管你也可以考虑这样的事情:

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如果你需要的只是简单的迭代,提供一个可以很好地工作的方法,但如果你需要更多的控制,那么上面的东西就可以了(当然,你可以做到这两点)

编辑
添加了每种方法