1. 程式人生 > >JS設計模式——迭代器模式

JS設計模式——迭代器模式

模式作用:
1,為遍歷不同的集合結構提供一個統一的介面,從而支援同樣的演算法在不同的集合結構上進行操作
2,對於集合內部結果常常變化各異,我們不想暴露其內部結果的話,但又想讓客戶程式碼透明的訪問其中的元素,這種情況下我們可以使用迭代器模式
注意事項:
1,一般的迭代,我們至少要有2個方法,hasNext()和Next(),這樣才能做到遍歷所有物件
2,遍歷的同時更改迭代器所在的集合結構可能會導致問題(比如C#的foreach裡不允許修改item)
<meta charset="utf-8">
<script type="text/javascript">
    var arr=["1","2","3"];
    var diedai=(function(){
        var length=arr.length;
        index=0;
        return{
            hasNext:function(){
                return index<length;
            },
            next:function(){
                var data=arr[index];
                index=index+1;
                return data;
            },
            reset:function(){
                index=0;
            }
        };
    })();   //自執行函式
    while(diedai.hasNext()){
        console.log(diedai.next());
    }
//jQuery的each方法呼叫
    // $.each(arr,function(index,val){
    //     console.log(index);
    //     console.log(val);
    // });

</script>