<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      深入理解JavaScript系列(35):設計模式之迭代器模式

      2012-03-09 08:46  湯姆大叔  閱讀(12394)  評論(12)    收藏  舉報

      介紹

      迭代器模式(Iterator):提供一種方法順序一個聚合對象中各個元素,而又不暴露該對象內部表示。

      迭代器的幾個特點是:

      1. 訪問一個聚合對象的內容而無需暴露它的內部表示。
      2. 為遍歷不同的集合結構提供一個統一的接口,從而支持同樣的算法在不同的集合結構上進行操作。
      3. 遍歷的同時更改迭代器所在的集合結構可能會導致問題(比如C#的foreach里不允許修改item)。

      正文

      一般的迭代,我們至少要有2個方法,hasNext()和Next(),這樣才做做到遍歷所有對象,我們先給出一個例子:

      var agg = (function () {
      var index = 0,
      data = [1, 2, 3, 4, 5],
      length = data.length;

      return {
      next: function () {
      var element;
      if (!this.hasNext()) {
      return null;
      }
      element = data[index];
      index = index + 2;
      return element;
      },

      hasNext: function () {
      return index < length;
      },

      rewind: function () {
      index = 0;
      },

      current: function () {
      return data[index];
      }

      };
      } ());

      使用方法和平時C#里的方式是一樣的:

      // 迭代的結果是:1,3,5
      while (agg.hasNext()) {
      console.log(agg.next());
      }

      當然,你也可以通過額外的方法來重置數據,然后再繼續其它操作:

      // 重置
      agg.rewind();
      console.log(agg.current()); // 1

      jQuery應用例子

      jQuery里一個非常有名的迭代器就是$.each方法,通過each我們可以傳入額外的function,然后來對所有的item項進行迭代操作,例如:

      $.each(['dudu', 'dudu', '酸奶小妹', '那個MM'], function (index, value) {
      console.log(index + ': ' + value);
      });
      //或者
      $('li').each(function (index) {
      console.log(index + ': ' + $(this).text());
      });

      總結

      迭代器的使用場景是:對于集合內部結果常常變化各異,我們不想暴露其內部結構的話,但又響讓客戶代碼透明底訪問其中的元素,這種情況下我們可以使用迭代器模式。

      同步與推薦

      本文已同步至目錄索引:深入理解JavaScript系列

      深入理解JavaScript系列文章,包括了原創,翻譯,轉載等各類型的文章,如果對你有用,請推薦支持一把,給大叔寫作的動力。

      主站蜘蛛池模板: 国产在线观看免费观看| 国产精品三级中文字幕| 国产免费一区二区三区在线观看| 少妇高清一区二区免费看| 欧洲国产成人久久精品综合| 另类 专区 欧美 制服丝袜| 欧洲无码一区二区三区在线观看 | 亚洲国产精品无码观看久久| 日本欧美大码aⅴ在线播放| 亚洲国产一区二区av| 中国老太婆video| 成人免费乱码大片a毛片| 色综合视频一区二区三区| 最好看的中文字幕国语| 亚洲区激情区无码区日韩区 | 嘉峪关市| 久久av无码精品人妻出轨| 国产在线超清日本一本| 塘沽区| 一区二区亚洲精品国产精| 在线 欧美 中文 亚洲 精品| 定襄县| 99久久国产综合精品色| 99精品国产成人一区二区| 天堂网av成人在线观看| 国产精品二区中文字幕| 色成人精品免费视频| 国产高清一区二区不卡| 国产一区二区午夜福利久久| 狠狠色丁香婷婷久久综合五月| 国产不卡精品一区二区三区| 国产精品成人一区二区三区| 亚洲精品综合久久国产二区| 精品无码三级在线观看视频| 久热综合在线亚洲精品| 欧洲女人牲交性开放视频| 欧美成人无码a区视频在线观看| 国产高清国产精品国产专区| 四虎www永久在线精品| 在线日韩日本国产亚洲| 久久久久无码精品国产不卡|