最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript設計模型Iterator實例解析

 更新時間:2020年01月22日 10:09:17   作者:李建明180  
這篇文章主要介紹了JavaScript設計模型Iterator實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

這篇文章主要介紹了JavaScript設計模型Iterator實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

Iterator Pattern是一個很重要也很簡單的Pattern:迭代器!
我們可以提供一個統(tǒng)一入口的迭代器,Client只需要知道有哪些方法,或是有哪些Concrete Iterator,并不需要知道他們底層如何實作!現(xiàn)在就讓我們來開始吧!

起手式

Iterator最主要的東西就是兩個:hasNext、next。要讓Client知道是否還有下一個,和切換到下一個!

定義Interface

interface IteratorInterface {
  index: number
  dataStorage: any
  hasNext(): boolean
  next(): any
  addItem(item: any): void
}

實作介面

下面的范例我將會使用Map、Array這兩個常見的介面實作。

class iterator1 implements IteratorInterface {
  index: number
  dataStorage: any[]
  constructor() {
    this.index = 0
    this.dataStorage = []
  }
  hasNext(): boolean {
    return this.dataStorage.length > this.index
  }
  next(): any {
    return this.dataStorage[this.index ++]
  }
  addItem(item: any): void {
    this.dataStorage.push(item)
  }
}
// map
class iterator2 implements IteratorInterface {
  index: number
  dataStorage: Map<number, any>
  constructor() {
    this.index = 0
    this.dataStorage = new Map<number, any>()
  }
  hasNext(): boolean {
    return this.dataStorage.get(this.index) != undefined
  }
  next(): any {
    return this.dataStorage.get(this.index ++)
  }
  addItem(item: any): void {
    this.dataStorage.set(this.dataStorage.size, item)
  }
}

Client

我沒有實作一個Client,所以我是直接new一個類別出來直接使用!

const i = new iterator1()
i.addItem(123)
i.addItem(456)
i.addItem('dolphin')
while(i.hasNext()){
  console.log(i.next())
}
console.log(`====================`)
const i2 = new iterator2()
i2.addItem(123)
i2.addItem(456)
i2.addItem('dolphin')
while(i2.hasNext()){
  console.log(i2.next())
}

結論

會發(fā)現(xiàn)Iterator 1號 2號的結果都是一樣的!他們都只需要讓Client知道有hasNext、next就好,底層的實作不需要讓他們知道!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • js關閉瀏覽器窗口及檢查瀏覽器關閉事件

    js關閉瀏覽器窗口及檢查瀏覽器關閉事件

    js關閉瀏覽器窗口,不彈出提示框。支持ie6+,火狐,谷歌等瀏覽器,下面以一個示例為大家詳細介紹下具體的實現(xiàn)方法,感興趣的朋友可以參考下
    2013-09-09
  • JavaScript實現(xiàn)全選或反選功能

    JavaScript實現(xiàn)全選或反選功能

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)全選或反選功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • JS操作json對象key、value的常用方法分析

    JS操作json對象key、value的常用方法分析

    這篇文章主要介紹了JS操作json對象key、value的常用方法,結合實例形式分析了js操作json對象鍵值對遍歷及增刪的相關操作技巧,需要的朋友可以參考下
    2019-10-10
  • 微信小程序實現(xiàn)可長按移動控件

    微信小程序實現(xiàn)可長按移動控件

    這篇文章主要為大家詳細介紹了微信小程序實現(xiàn)可長按移動控件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • JavaScript中的數(shù)組操作介紹

    JavaScript中的數(shù)組操作介紹

    這篇文章主要介紹了JavaScript中的數(shù)組操作介紹,本文講解了join()、reverse()、sort()、concat()、slice()、splice()等幾個函數(shù)的操作實例,需要的朋友可以參考下
    2014-12-12
  • 用js屏蔽被http劫持的浮動廣告實現(xiàn)方法

    用js屏蔽被http劫持的浮動廣告實現(xiàn)方法

    下面小編就為大家?guī)硪黄胘s屏蔽被http劫持的浮動廣告實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • echarts中地圖重疊問題解決

    echarts中地圖重疊問題解決

    在使用Echarts開發(fā)項目時,經常會遇到地圖組件的開發(fā),困擾許久的地圖重疊問題,本文就來解決一下這個問題,感興趣的可以了解一下
    2023-08-08
  • javascript 對象數(shù)組根據(jù)對象object key的值排序

    javascript 對象數(shù)組根據(jù)對象object key的值排序

    本文僅僅是實現(xiàn)了javascript 對象數(shù)組根據(jù)對象object key的值排序,算是對自己學習javascript這么久的一個小結,希望大家能夠喜歡
    2015-03-03
  • JS小技巧之通過字符串追加元素

    JS小技巧之通過字符串追加元素

    這篇文章主要介紹了JS小技巧之通過字符串追加元素方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • iSlider手機端圖片滑動切換插件使用詳解

    iSlider手機端圖片滑動切換插件使用詳解

    這篇文章主要為大家詳細介紹了iSlider手機端圖片滑動切換插件的使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12

最新評論

五河县| 五大连池市| 永登县| 封开县| 庐江县| 安塞县| 大理市| 美姑县| 从化市| 高碑店市| 林西县| 新邵县| 交城县| 黄浦区| 建宁县| 西乌珠穆沁旗| 南昌县| 岱山县| 五台县| 金华市| 巧家县| 灵台县| 金平| 双鸭山市| 太保市| 古交市| 儋州市| 商都县| 红原县| 灵丘县| 津南区| 永清县| 龙南县| 木兰县| 建宁县| 吴堡县| 通许县| 北辰区| 麻城市| 通渭县| 鄄城县|