摘要:如果你了解過(guò),那么你應(yīng)該對(duì)比較熟悉了,但是你知道背后的原理是什么么嗎首先調(diào)用集合的方法,緊接著返回一個(gè)新的迭代器對(duì)象。迭代器對(duì)象可以是任意具有方法的對(duì)象循環(huán)將重復(fù)調(diào)用這個(gè)方法,每次循環(huán)調(diào)用一次。
如果你了解過(guò)ES6,那么你應(yīng)該對(duì)for...of比較熟悉了,但是你知道for...of背后的原理是什么么嗎?
for...of首先調(diào)用集合的[Symbol.Iterator]()方法,緊接著返回一個(gè)新的迭代器對(duì)象。迭代器對(duì)象可以是任意具有.next()方法的對(duì)象;for ...of循環(huán)將重復(fù)調(diào)用這個(gè)方法,每次循環(huán)調(diào)用一次。舉個(gè)例子,下面是最簡(jiǎn)單的迭代器:
var zerosForeverIterator={ [Symbol.iterator]:function(){ return this; }, next:function(){ return {done:false,value:0}; } }
我們可以寫(xiě)一個(gè)簡(jiǎn)單的for...of循環(huán)然后按照下面的方法調(diào)用重寫(xiě)被迭代的對(duì)象:
首先是for...of循環(huán):
for(VAR of ITERABLE){ //一些語(yǔ)句 }
然后是一個(gè)使用以下方法和少許臨時(shí)變量實(shí)現(xiàn)的與之前大致相當(dāng)?shù)氖纠?/p>
var $iterator=ITERABLE[Symbol.iterator()]; var $result=$iterator.next(); while(!$result.done){ vAR=$result.value; //一些語(yǔ)句 $result=$iterator.next(); }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/81063.html
摘要:但是有了尾調(diào)用優(yōu)化之后,遞歸函數(shù)的性能有了提升。常被用來(lái)檢查對(duì)象中是否存在某個(gè)鍵名,集合常被用來(lái)獲取已存的信息。循環(huán)解構(gòu)對(duì)象本身不支持迭代,但是我們可以自己添加一個(gè)生成器,返回一個(gè),的迭代器,然后使用循環(huán)解構(gòu)和。 一、let和const 在JavaScript中咱們以前主要用關(guān)鍵var來(lái)定義變量,ES6之后,新增了定義變量的兩個(gè)關(guān)鍵字,分別是let和const。對(duì)于變量來(lái)說(shuō),在ES5中...
摘要:探索專(zhuān)為而設(shè)計(jì)的將探討進(jìn)行了何種改進(jìn),以及這些改進(jìn)背后的原因。關(guān)于最友好的文章進(jìn)階前言之前就寫(xiě)過(guò)一篇關(guān)于最友好的文章反響很不錯(cuò),由于那篇文章的定位就是簡(jiǎn)單友好,因此盡可能的摒棄復(fù)雜的概念,只抓住關(guān)鍵的東西來(lái)講,以保證大家都能看懂。 周月切換日歷 一個(gè)可以進(jìn)行周月切換的日歷,左右滑動(dòng)的切換月份,上下滑動(dòng)可以進(jìn)行周,月不同的視圖切換,可以進(jìn)行事件的標(biāo)記,以及節(jié)假日的顯示,功能豐富 Andr...
摘要:迭代器模式順序訪(fǎng)問(wèn)一個(gè)對(duì)象的對(duì)象的內(nèi)部可分為內(nèi)部迭代器和外部迭代器內(nèi)部迭代器就是常見(jiàn)的或者外部迭代器實(shí)現(xiàn)了簡(jiǎn)單實(shí)現(xiàn) 迭代器模式 順序訪(fǎng)問(wèn)一個(gè)對(duì)象的 對(duì)象的內(nèi)部 可分為內(nèi)部迭代器 和 外部迭代器 內(nèi)部迭代器 就是常見(jiàn)的 forEach(), 或者 $.each() function forEach(arr, callback) { var i = 0, len...
摘要:迭代器是一種特殊對(duì)象,每一個(gè)迭代器對(duì)象都有一個(gè),該方法返回一個(gè)對(duì)象,包括和屬性。默認(rèn)情況下定義的對(duì)象是不可迭代的,但是可以通過(guò)創(chuàng)建迭代器。在迭代器中拋出錯(cuò)誤不再執(zhí)行生成器返回語(yǔ)句生成器中添加表示退出操作。迭代器是一個(gè)對(duì)象。 迭代器(Iterator) ES5實(shí)現(xiàn)迭代器 迭代器是什么?遇到這種新的概念,莫慌張。 迭代器是一種特殊對(duì)象,每一個(gè)迭代器對(duì)象都有一個(gè)next(),該方法返回一個(gè)對(duì)...
閱讀 1706·2021-10-09 09:44
閱讀 3267·2021-09-27 13:36
閱讀 1526·2021-09-22 15:33
閱讀 1281·2021-09-22 15:23
閱讀 1167·2021-09-06 15:02
閱讀 1704·2019-08-29 16:14
閱讀 2910·2019-08-29 15:26
閱讀 2413·2019-08-28 18:08