国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

ES6 Iterator遍歷器原理,應用場景及相關常用知識拓展詳解

2024-05-06 15:44:30
字體:
來源:轉載
供稿:網友

本文實例講述了ES6 Iterator遍歷器原理,應用場景及相關常用知識拓展。分享給大家供大家參考,具體如下:

介紹Iterator之前先列舉下js的表示數據集合結構的幾種方式:

在es6之前有 Array , Object, es6新增了 map, set,當然用戶也可以組合使用這幾種數據結構,靈活存儲數據。

但是當數據結構變得復雜后,怎樣取到里面的數據就也相對復雜,這就需要有一種讀取數據的統一的接口機制,來處理不同的數據結構。

遍歷器就是這樣一種接口機制,Iterator是一種接口,為不同數據結構提供統一的接口機制。

相應的任何數據結構只要部署Iterator接口,就可以完成遍歷操作。

Iterator的作用:

1,為各種數據結構提供一種統一的,簡單的訪問接口;

2,使得數據結構的成員能夠按照某種次序排列;

3,ES6提供了一種新的遍歷循環(for......of.....),Iterator被for......of.....循環調用;

Iterator本質:

遍歷器本質上是一種指針對象,指針對象上有next()方法,第幾次調用就指向第幾個成員

Iterator上next()方法調用返回:

1,返回當前成員的信息

2,返回遍歷是否結束

模擬實現Iterator

var it = makeIterator(['a', 'b']); it.next() // { value: "a", done: false }it.next() // { value: "b", done: false }it.next() // { value: undefined, done: true } function makeIterator(array) { var nextIndex = 0; return {  next: function() {   return nextIndex < array.length ?    {value: array[nextIndex++], done: false} :    {value: undefined, done: true};  } };}

使用Typescript

interface Iterable { [Symbol.iterator]() : Iterator,} interface Iterator { next(value?: any) : IterationResult,} interface IterationResult { value: any, done: boolean,}

關于默認的Iterator接口:

ES6 規定,默認的 Iterator 接口部署在數據結構的Symbol.iterator屬性,或者說,一個數據結構只要具有Symbol.iterator屬性,就可以認為是“可遍歷的”(iterable)。

Symbol.iterator的本質:

1,Symbol.iterator本身是一個函數,對應當前數據結構默認的遍歷器生成函數;

2,執行Symbol.iterator這個函數會返回一個遍歷器。

實例:

const obj = { [Symbol.iterator] : function () {  return {   next: function () {    return {     value: 1,     done: true    };   }  }; }};//這樣定義后對象就有了Iterator接口//執行對象obj的symbol.iterator后,返回一個遍歷器

具有原生iterator的數據結構:

Array , Map, Set, String, TypedArray, 函數的argulements對象,NodeList對象(節點對象);

數組iterator實例

let arr = ['a', 'b', 'c'];let iter = arr[Symbol.iterator](); iter.next() // { value: 'a', done: false }iter.next() // { value: 'b', done: false }iter.next() // { value: 'c', done: false }iter.next() // { value: undefined, done: true }            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 宁海县| 巧家县| 凤台县| 璧山县| 梁平县| 九寨沟县| 寿阳县| 重庆市| 榆中县| 宜阳县| 瑞昌市| 古浪县| 常宁市| 邯郸市| 东至县| 曲松县| 屏边| 涟源市| 敖汉旗| 五大连池市| 禹城市| 麻栗坡县| 静海县| 延庆县| 河间市| 乳源| 高雄县| 肥西县| 贵阳市| 永年县| 金溪县| 吉木乃县| 惠来县| 阿拉善盟| 安宁市| 临沂市| 修水县| 海宁市| 手游| 铁力市| 资中县|