關於 Symbol.iterator
前言
Symbol.iterator 是設計來提取容器的預設變數,容器大部分都有像 keys() 或 entries() 了,已經很好用了,遽然還有另外一種提取法,在此把學習的過程做個紀錄。
內容
範例如下
const map1 = new Map(); map1.set('0', 'foo'); map1.set(1, 'bar'); const iterator1 = map1[Symbol.iterator](); for (const item of iterator1) { console.log(item); } for (const item of map1.entries() ) { console.log(item); }
Symbol.iterator 的用法是透過 Symbol 的使用方法,也就是 [ symbol ] 的語法來存取,不過要注意這裡提取的後面要加 () ,看起來就像個 function ,提取後的變數可以搭配 for...of 來提取容器內容,這不是和 entries() 的做法一樣了嗎!所以範例最後也示範了 entries() ,結果是一樣的,但 entries() 看起來比較直覺,相較之下, Symbol.iterator 的用法沒有特別的優勢,所以還是用 entries() 比較好。
沒有留言:
張貼留言