亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

衡阳县| 上林县| 龙游县| 开原市| 苗栗市| 西乡县| 福泉市| 常州市| 塔城市| 三河市| 镇远县| 湖南省| 定日县| 双辽市| 日土县| 巴林右旗| 沂南县| 壤塘县| 鸡泽县| 大足县| 大安市| 平昌县| 沙坪坝区| 陈巴尔虎旗| 珲春市| 虞城县| 新泰市| 海阳市| 宁都县| 滦南县| 怀来县| 通州区| 宁强县| 永城市| 柳林县| 织金县| 富阳市| 保亭| 衡山县| 新河县| 瑞安市|