迭代器模式
1.1 迭代器模式定義
迭代器模式是指提供一種方法順序訪問一個聚合對象中的各個元素,而又不需要暴露該對象的內部。迭代器模式可以把迭代的過程從業務邏輯中分離出來,在使用迭代器模式後,即不需要關心對象的內部構造,也可以按順序訪問其中的每個元素。
現在許多語言都有內置的迭代器實現,許多歷覽器也支持JavaScript的Array.prototype.forEach方法。
1.2 jQuery中的迭代器
$.each([1,2,3], (i, n) => {
console.log(i, n) // i表示當前的下標,n表示當前的值
})
1.3 實現自己的迭代器
let each = function (arr, cb) {
for (let i = 0; i < arr.length; i++) {
cb.call(arr[i], i, arr[i])
}
}
each([1,2,3], function (i, n) {
console.log(i, n)
})
2 內部迭代器和外部迭代器
2.1內部迭代器
內部迭代器的迭代規則已經被提前規定好的。
2.2 外部迭代器
外部迭代器必須顯示的請求下一個迭代元素,外部迭代器增加了調用的複雜度,頁增加了迭代器的靈活性,我們可以手動控制迭代的過程或順序。
3 迭代數組與及字面量對象
迭代器不僅可以迭代數組還可以迭代一些類數組的對象,比如arguments
。無論使內部迭代器還是外部迭代器,只要迭代對象擁有length屬性,並且可以通過下標訪問那他就可以被迭代。