首先在es6中有三大最重要的部分:class(類相關),promise,module(模組化)。
我主要說promise,這裡有乙個知識順序就是promise是什麼,解決了什麼問題,然後promise的最終解決方案是async await,同時async await的由來是生成器,生成器生成的是迭代器,這樣就連線起來了。
為了引出迭代器我先寫了一些東西:
var arr =[1
,2,3
,4]var str =
'abc'
var obj =
for(
var i =
0; i < arr.length; i++
)for
(var i =
0; i < str.length; i++
) arr.
foreach
(i => console.
log(i)
)for
(var k in obj)
這些是一些常見的資料型別,那麼在我們需要對這些資料進行遍歷的時候是很麻煩的。因為不同的資料型別有不同的遍歷的方法。所以為了有一種統一的遍歷方式於是就有了迭代,在es6中增加了for…of語法
var arr =[1
,2,3
,4]var str =
'abc'
var obj =
for(
let i of arr)
for(
let i of str)
for(
let i of obj)
但是輸出後我們發現陣列和字串都能執行,但是物件報錯了,因為物件缺少了這個:
也就是iterator 介面
遍歷器(iterator)就是這樣一種機制。它是一種介面,為各種不同的資料結構提供統一的訪問機制。任何資料結構只要部署 iterator 介面,就可以完成遍歷操作(即依次處理該資料結構的所有成員)。
iterator 的作用有三個:一是為各種資料結構,提供乙個統一的、簡便的訪問介面;二是使得資料結構的成員能夠按某種次序排列;三是 es6 創造了一種新的遍歷命令for…of迴圈,iterator 介面主要供for…of消費。
我們來列印一下這個方法:
我們呼叫這上面的next方法時
inter .
next()
// inter .
next()
// inter .
next()
// inter .
next()
// inter .
next()
//
所以說:iterator 的遍歷過程是這樣的。
(1)建立乙個指標物件,指向當前資料結構的起始位置。也就是說,遍歷器物件本質上,就是乙個指標物件。
(2)第一次呼叫指標物件的next方法,可以將指標指向資料結構的第乙個成員。
(3)第二次呼叫指標物件的next方法,指標就指向資料結構的第二個成員。
(4)不斷呼叫指標物件的next方法,直到它指向資料結構的結束位置。
每一次呼叫next方法,都會返回資料結構的當前成員的資訊。具體來說,就是返回乙個包含value和done兩個屬性的物件。其中,value屬性是當前成員的值,done屬性是乙個布林值,表示遍歷是否結束。
其實我們可以模擬一下這個方法:
function
makeiter
(arr)
}return}}
}
這就是迭代器的原理
擴充套件補充:
原生具備 iterator 介面的資料結構如下。
array
mapset
string
typedarray
函式的 arguments 物件
nodelist 物件
迭代器和 for of 迴圈
1.for迴圈 支援break continue return等 for var index 0 index myarray.length index 2 foreach 不支援break continue return false相當於continue myarray.foreach functi...
遍歷器與 for of 迴圈
iterator 的作用 iterator 遍歷器 迭代器 for 1,2 foreach new set foreach iterator 也是用來遍歷的 尋找 iterator const it 1 2 symbol.iterator 使用 iterator const it 1 2 symbo...
js中for of 的使用和迭代器
for.of是es6中引入的新特性,它主要的作用是 迴圈乙個可迭代的物件。它可以迴圈遍歷,陣列 字串 set物件等等,先來看兩個簡單的例子 遍歷字串 let str hello for item of str 遍歷陣列 let arr 1,2,3,4,5 for arritem of arr 遍歷物...