遍歷器(iterator)就是這樣一種機制。它是一種介面,為各種不同的資料結構提供統一的訪問機制。任何資料結構只要部署iterator介面,就可以完成遍歷操作(即依次處理該資料結構的所有成員)。
作用:iterator的遍歷過程:
(1)建立乙個指標物件,指向當前資料結構的起始位置。也就是說,遍歷器物件本質上,就是乙個指標物件。
(2)第一次呼叫指標物件的next
方法,可以將指標指向資料結構的第乙個成員。
(3)第二次呼叫指標物件的next
方法,指標就指向資料結構的第二個成員。
(4)不斷呼叫指標物件的next
方法,直到它指向資料結構的結束位置。
var it = makeiterator(['a', 'b']);it.next()
//it.next() //
function
makeiterator(array) :;}
};}
在es6中,有三類資料結構原生具備iterator介面:陣列、某些類似陣列的物件、set和map結構。
可以覆蓋原生的symbol.iterator
方法,達到修改遍歷器行為的目的。
var str = new string("hi");[...str]
//["h", "i"]
str[symbol.iterator] = function
() ;
} else
; }
},_first:
true
};};
[...str]
//["bye"]
str //
"hi"
for...of迴圈可以使用的範圍包括陣列、set和map結構、某些類似陣列的物件(比如arguments物件、dom nodelist物件)、後文的generator物件,以及字串。
ES6新特性 Iterator和for of迴圈
迭代過程 獲取迭代器 指向當前資料結構的起始位置 通過物件的某些方法返回迭代器物件。如 多次呼叫iterator.next 向下迭代指向下乙個位置。當done為true時遍歷結束。如要重新迭代,需要重新獲取迭代器 從第1步重新開始 string array set map dom元素 開發中。obj...
ES6入門之set和map
es6提供了新的資料結構set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。set函式可以接受乙個陣列 或類似陣列的物件 作為引數,用來初始化。例一 var set new set 1,2,3,4,4 set 1,2,3,4 var s newset 2,3,5,4,5,2,2 map x ...
ES6入門之set和map
es6提供了新的資料結構set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。set函式可以接受乙個陣列 或類似陣列的物件 作為引數,用來初始化。例一 var set new set 1,2,3,4,4 set 1,2,3,4 var s new set 2,3,5,4,5,2,2 map x...