中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

警告 此服務(wù)器美國(guó)維護(hù)搜外seo視頻 網(wǎng)絡(luò)營(yíng)銷免費(fèi)視頻課程

警告 此服務(wù)器美國(guó)維護(hù),搜外seo視頻 網(wǎng)絡(luò)營(yíng)銷免費(fèi)視頻課程,建企業(yè)網(wǎng)站步驟,設(shè)計(jì)logo用什么軟件好Iterator迭代器和for/of循環(huán)原理 Iterator迭代器規(guī)范 自己創(chuàng)建一個(gè)Iterator類,來(lái)實(shí)現(xiàn)ES6中的迭代器規(guī)范: class Iterator {constructor(assemble) {// assemble:需要迭代的數(shù)據(jù)結(jié)構(gòu)this.assemble = assemble// index:記錄迭代的次數(shù)(或者索引)this.index = -1}// 必須具…

Iterator迭代器和for/of循環(huán)原理

Iterator迭代器規(guī)范

在這里插入圖片描述

自己創(chuàng)建一個(gè)Iterator類,來(lái)實(shí)現(xiàn)ES6中的迭代器規(guī)范:

class Iterator {constructor(assemble) {// assemble:需要迭代的數(shù)據(jù)結(jié)構(gòu)this.assemble = assemble// index:記錄迭代的次數(shù)(或者索引)this.index = -1}// 必須具備next方法next() {this.index++let { assemble, index } = thisif (index >= assemble.length) {// 迭代完畢return {done: true,value: undefined}}return {done: false,value: assemble[index]}}
}

創(chuàng)建一個(gè)實(shí)例對(duì)象,其應(yīng)該符合迭代器規(guī)范的要求:

  • itor.next() 具備next方法,執(zhí)行這個(gè)方法可以依次遍歷數(shù)據(jù)結(jié)構(gòu)中的每一個(gè)成員
  • 每一次遍歷返回的結(jié)果是一個(gè)對(duì)象 {done:false,value:xxx}
    • done: 是否迭代完畢
    • value: 當(dāng)前獲取的成員值

符合以上兩個(gè)特點(diǎn)的對(duì)象,我們稱之為符合迭代器規(guī)范的對(duì)象

let arr = [10, 20, 30, 40],itor = new Iterator(arr)
console.log(itor.next()) // {done: false, value: 10}
console.log(itor.next()) // {done: false, value: 20}
console.log(itor.next()) // {done: false, value: 30}
console.log(itor.next()) // {done: false, value: 40}
console.log(itor.next()) // {done: true, value: undefined}

在JS中,有很多數(shù)據(jù)結(jié)構(gòu),天生具備迭代器規(guī)范,例如:
        我們主要看數(shù)據(jù)結(jié)構(gòu)(對(duì)象)是否具備 Symbol.iterator 這個(gè)屬性;有這個(gè)屬性就具備迭代器規(guī)范,沒(méi)有就不具備;具備這個(gè)規(guī)范,就可以使用 for/of 循環(huán)來(lái)迭代數(shù)據(jù)中的每一項(xiàng)值了。

  • 數(shù)組 Array.prototype[Symbol(Symbol.iterator)]=function…
  • 部分類數(shù)組:
    • arguments[Symbol(Symbol.iterator)]
    • NodeList.prototype[Symbol(Symbol.iterator)] document.querySelectorAll('*')
    • HTMLCollection.prototype[Symbol(Symbol.iterator)] document.getElementsByTagName('*')
  • 字符串 String.prototype[Symbol(Symbol.iterator)]
  • Set/Map

但是對(duì)于純粹對(duì)象「或者自己構(gòu)建的類數(shù)組對(duì)象(以數(shù)字作為索引,索引從0開(kāi)始逐級(jí)遞增,有l(wèi)ength屬性表示長(zhǎng)度)」等來(lái)講,默認(rèn)是不具備 Symbol.iterator 這個(gè)屬性的,所以他們不具備迭代器規(guī)范「不能直接使用 for/of 循環(huán)」

for/of循環(huán)原理

重寫(xiě)數(shù)組迭代器規(guī)范(數(shù)組有內(nèi)置的迭代器規(guī)范)來(lái)說(shuō)明原理:

// 數(shù)組迭代的方式 for、while、forEach/map、for/in、for/of...
let array = [10, 20, 30, 40]
array[Symbol.iterator] = function () {console.log('for/of Start');let self = this,// this->arrayindex = -1// 返回具備迭代器規(guī)范的對(duì)象->itorrreturn {next() {index += 2if (index >= self.length) {return {done: true,value: undefined}}return {done: false,value: self[index]}}}
}
// let itorr = array[Symbol.iterator]()
for (let val of array) {console.log(val);
}

在這里插入圖片描述

// for/of循環(huán)主要用于獲取數(shù)據(jù)結(jié)構(gòu)中每一項(xiàng)的‘值’
for (let val of array) {console.log(val);
}

原理:
1.迭代執(zhí)行,先執(zhí)行數(shù)組的 Symbol.iterator 這個(gè)方法,獲取一個(gè)具備迭代器規(guī)范的對(duì)象 -> itor
2.開(kāi)始迭代:每一次迭代都是把 itor.next 方法執(zhí)行

  • 把獲取對(duì)象中的value屬性值,賦值給val這個(gè)變量
  • 再看對(duì)象中done這個(gè)屬性的值,如果是false,則繼續(xù)迭代;如果是true,則結(jié)束迭代

普通對(duì)象是不具備迭代器規(guī)范的:

let obj = {name: '52lkk',age: 24,0: 100,[Symbol('AA')
http://www.risenshineclean.com/news/49735.html

相關(guān)文章:

  • 做網(wǎng)站前期費(fèi)用個(gè)人優(yōu)秀網(wǎng)頁(yè)設(shè)計(jì)
  • 公眾號(hào)怎么做微網(wǎng)站百度站長(zhǎng)工具驗(yàn)證
  • 網(wǎng)站注冊(cè)手機(jī)號(hào)安全嗎深圳網(wǎng)絡(luò)營(yíng)銷
  • 蘇州網(wǎng)站建設(shè)公司電話百度百科詞條創(chuàng)建入口
  • 六安網(wǎng)站推廣獲客appseo搜狗
  • 深圳手機(jī)網(wǎng)站開(kāi)發(fā)溫嶺網(wǎng)絡(luò)推廣
  • 黨建設(shè)網(wǎng)站營(yíng)銷咨詢公司排名前十
  • 裝飾公司 網(wǎng)站模板網(wǎng)絡(luò)推廣中心
  • 南京平臺(tái)網(wǎng)站建設(shè)網(wǎng)站如何優(yōu)化一個(gè)關(guān)鍵詞
  • 怎么做網(wǎng)站營(yíng)銷策劃個(gè)人網(wǎng)站設(shè)計(jì)畢業(yè)論文
  • 福田公司簡(jiǎn)介網(wǎng)站seo排名培訓(xùn)
  • 設(shè)計(jì)電子商務(wù)網(wǎng)站建設(shè)方案互聯(lián)網(wǎng)推廣方式有哪些
  • 潛江公司做網(wǎng)站徐州網(wǎng)站優(yōu)化
  • 煙臺(tái) 網(wǎng)站建設(shè)多少錢(qián)永久免費(fèi)客服系統(tǒng)有哪些軟件
  • 互動(dòng)吧網(wǎng)站模板青島網(wǎng)絡(luò)推廣
  • 網(wǎng)站建設(shè)公司如何約客戶瀏覽器下載
  • 網(wǎng)站流程圖軟件大型網(wǎng)站seo課程
  • 南縣做網(wǎng)站設(shè)計(jì)網(wǎng)站大全
  • 做響應(yīng)式網(wǎng)站兼容哪幾個(gè)尺寸百度云服務(wù)器官網(wǎng)
  • 大型網(wǎng)站架設(shè)需要考慮哪些問(wèn)題關(guān)鍵字參數(shù)
  • 網(wǎng)站建設(shè)的好處和目的網(wǎng)站關(guān)鍵詞快速排名技術(shù)
  • 美萍企業(yè)管理軟件海外aso優(yōu)化
  • WordPress里h1跟p有什么重慶seo海洋qq
  • 大連市公眾平臺(tái)網(wǎng)站搜索網(wǎng)頁(yè)內(nèi)容
  • 做ppt音樂(lè)怎么下載網(wǎng)站網(wǎng)絡(luò)小說(shuō)排行榜
  • 用rp怎么做網(wǎng)站導(dǎo)航菜單收錄提交入口網(wǎng)址
  • 起重機(jī)網(wǎng)站怎么做荊門(mén)今日頭條新聞發(fā)布
  • 卡通設(shè)計(jì)類網(wǎng)站欣賞網(wǎng)絡(luò)營(yíng)銷軟件大全
  • 臺(tái)州網(wǎng)站建設(shè)公司營(yíng)銷型網(wǎng)站建設(shè)
  • 寵物網(wǎng)站開(kāi)發(fā)與實(shí)現(xiàn)結(jié)論西部數(shù)碼域名注冊(cè)