generator 總覽:
上例項:
function* testgen ()
let test = testgen();
test.next(); //
test.next(); //
test.next(); //
test.next(); // 遍歷到這裡就結束了
test.next(); //
1、generator 函式返回的遍歷器物件和 iterator 介面的關係
generator 函式返回的遍歷器物件有個屬性方法叫symbol.iterator
,而前面的在 iterator 那一篇文章說過,乙個物件只要有symbol.iterator
方法,就可以呼叫該方法來生成乙個遍歷器物件;
generator 函式就是遍歷器生成函式,所以直接給乙個物件的symbol.iterator
賦值,該物件就有了iterator 介面;
我們來試試給乙個物件加乙個 iterator 介面:
let testgen = function* () ;
let testiteratorobj = ;
testiteratorobj[symbol.iterator] = testgen;
//testiteratorobj 物件就有了iterator 介面
[...testiteratorobj ] //[1,2,3]
//另外,generator 函式執行之後返回的遍歷器物件的 symbol.iterator 屬性方法執行的結果,等於遍歷器物件本身
let g = testgen();
console.log( g[symbol.iterator]() === g ); //true
2、遍歷器物件的next()
方法的引數 ES6系列 ES6簡介
2015年6月17日,ecmascript的第六個版本正式發布,該版本正式名稱為ecmascript 2015,但通常被稱為ecmascript 6或者es6。瀏覽器對es6的支援情況 es6主要應用於node.js,如果想用在瀏覽器中,就需要使用轉碼器 將es6 轉成es5 這意味著,可以用es6...
ES6 學習系列十六(Generator)
generator可以理解為非同步程式設計的一種解決方案。1 generator的基本定義就是在function後面加乙個 符號 通過next一步步執行yield的 let k tell console.log k.next console.log k.next console.log k.next...
ES6系列 詳解ES6中的Map
map類似於物件,都用於儲存key value結構的資料。但是,在傳統的物件上,只能用字串或者symbol來作為鍵名。然而,map與物件最大的差別就在於它可以各種資料型別作為鍵名。map是乙個建構函式,用於例項化例項。const m newmap const o m.set o,content m....