ES6學習系列 Generator 函式

2021-08-27 11:50:58 字數 956 閱讀 5348

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....