91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

web前端中迭代器模式的示例分析

發布時間:2022-03-24 15:03:13 來源:億速云 閱讀:212 作者:小新 欄目:web開發

這篇文章將為大家詳細講解有關web前端中迭代器模式的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

迭代器模式(Iterator Pattern)

如果你看到這,ES6中的迭代器 Iterator 相信你還是有點印象的,上面第60條已經做過簡單的介紹。迭代器模式簡單的說就是提供一種方法順序一個聚合對象中各個元素,而又不暴露該對象的內部表示。

迭代器模式解決了以下問題:

  • 提供一致的遍歷各種數據結構的方式,而不用了解數據的內部結構

  • 提供遍歷容器(集合)的能力而無需改變容器的接口

一個迭代器通常需要實現以下接口:

  • hasNext():判斷迭代是否結束,返回Boolean

  • next():查找并返回下一個元素

為Javascript的數組實現一個迭代器可以這么寫:

const item = [1, 'red', false, 3.14];function Iterator(items) {
  this.items = items;
  this.index = 0;}Iterator.prototype = {
  hasNext: function () {
    return this.index < this.items.length;
  },
  next: function () {
    return this.items[this.index++];
  }}

驗證一下迭代器是否工作:

const iterator = new Iterator(item);while(iterator.hasNext()){
  console.log(iterator.next());}
  /輸出:1, red, false, 3.14

ES6提供了更簡單的迭代循環語法 for…of,使用該語法的前提是操作對象需要實現 可迭代協議(The iterable protocol),簡單說就是該對象有個Key為 Symbol.iterator 的方法,該方法返回一個iterator對象。

比如我們實現一個 Range 類用于在某個數字區間進行迭代:

function Range(start, end) {
  return {
    [Symbol.iterator]: function () {
      return {
        next() {
          if (start < end) {
            return { value: start++, done: false };
          }
          return { done: true, value: end };
        }
      }
    }
  }}

驗證一下:

for (num of Range(1, 5)) {
  console.log(num);}// 輸出:1, 2, 3, 4

關于“web前端中迭代器模式的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

web
AI

乌拉特中旗| 怀仁县| 习水县| 黄龙县| 方山县| 克东县| 海门市| 集安市| 福海县| 扶沟县| 土默特左旗| 萝北县| 彩票| 新丰县| 宜阳县| 凤山市| 芜湖市| 巩留县| 吕梁市| 海伦市| 丽水市| 保康县| 汨罗市| 资兴市| 西林县| 工布江达县| 专栏| 环江| 泾源县| 华亭县| 江油市| 东乡县| 临漳县| 达孜县| 武夷山市| 芒康县| 田东县| 广德县| 江城| 景德镇市| 南皮县|