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

JavaScript設(shè)計(jì)模型Iterator實(shí)例解析

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

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

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

起手式

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

定義Interface

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

實(shí)作介面

下面的范例我將會(huì)使用Map、Array這兩個(gè)常見的介面實(shí)作。

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

我沒有實(shí)作一個(gè)Client,所以我是直接new一個(gè)類別出來直接使用!

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())
}

結(jié)論

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • js關(guān)閉瀏覽器窗口及檢查瀏覽器關(guān)閉事件

    js關(guān)閉瀏覽器窗口及檢查瀏覽器關(guān)閉事件

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

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

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

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

    這篇文章主要介紹了JS操作json對(duì)象key、value的常用方法,結(jié)合實(shí)例形式分析了js操作json對(duì)象鍵值對(duì)遍歷及增刪的相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10
  • 微信小程序?qū)崿F(xiàn)可長(zhǎng)按移動(dòng)控件

    微信小程序?qū)崿F(xiàn)可長(zhǎng)按移動(dòng)控件

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

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

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

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

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

    echarts中地圖重疊問題解決

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

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

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

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

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

    iSlider手機(jī)端圖片滑動(dòng)切換插件使用詳解

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

最新評(píng)論

新昌县| 嘉禾县| 崇礼县| 称多县| 望谟县| 丽水市| 乾安县| 电白县| 房山区| 武胜县| 丹凤县| 涡阳县| 萍乡市| 苍山县| 荣昌县| 保山市| 萨迦县| 兴业县| 平定县| 麦盖提县| 吴忠市| 鄂伦春自治旗| 巩留县| 朔州市| 班玛县| 鄂温| 喀喇| 澄迈县| 桐城市| 静海县| 花垣县| 林西县| 永福县| 桃源县| 陇川县| 沭阳县| 油尖旺区| 阿克陶县| 延吉市| 夏河县| 定安县|