微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JS设计模式:迭代器模式

var Iterator = function(items,container) {
    var container = container && document.getElementById(container) || document,items = container.getElementsByTagName(items),length = items.length,index = 0;
    var splice = [].splice;
return {
    f<a href="https://www.jb51.cc/tag/irs/" target="_blank" class="keywords">irs</a>t : function() {
        index = 0;
        return items[index];
    },second : function() {
        index = length - 1;
        return items[index];
    },pre : function() {
        if (--index > 0) {
            return items[index];
        } else {
            index = 0;
            return null;
        }
    },next : function() {
        if (++index < length) {
            return items[index];
        } else {
            index = length - 1;
            return null;
        }
    },get : function() {
        index = num >= 0 ? num % length : num % length + length;
        return items[index];
    },dealEach : function(fn) {
        var args = splice.call(arguments,1);
        for (var i = 0; i < length; i++) {
            fn.apply(items[i],args);
        }
    },dealItem : function(num,fn) {
        fn.apply(this.get(num),splice.call(arguments,2));
    },exclusive : function(num,allFn,numFn) {
        this.dealEach(allFn);
        if (Object.prototype.toString(items[num]) === "[object Array]") {
            for (var i = 0,len = num.length; i < len; i++) {
                this.dealItem(num[i],numFn);
            }
        } else {
            this.dealItem(num,numFn);
        }
    }
}

}

操作一个聚合对象中的每一个元素的方法集合。 (状态模式 策略模式)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐