第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

【11月打卡】第75天 前端常用的7種設(shè)計(jì)模式(11)

標(biāo)簽:
設(shè)計(jì)模式

迭代器(遍历器)在JS中的实际应用

  • 用于for…of
  • 解构、扩展运算符、Array.from
  • 用于Promise.all和Promise.race
  • yield *

for…of
有迭代器Iterator接口的有序结构都可以通过for…of来进行遍历

const str = "know";
for (let k of str) {
  console.log(k); // k n o w
}

const arr = [1, 2];
for (let k of arr) {
  console.log(k); // 1 2
}

const set = new Set("abc");
for (let k of set) {
  console.log(k); // a b c
}

const map = new Map().set("name", "tom").set("age", 15);
for (let k of map) {
  console.log(k); // [ 'name', 'tom' ]  [ 'age', 15 ]
}

解构、扩展运算符、Array.from

有迭代器Iterator接口的有序结构都可以使用上面的解构、扩展运算符、Array.from;有序结构作为参数,会调用默认的 Iterator 接口

const arr = [1, 2];
const [n1, n2] = arr;
console.log(n1, n2); // 1 2

const str = "tom";
const [a, b, c] = str;
console.log(a, b, c); // t o m

const set = new Set().add(1).add("w").add(5);
const [s1, s2] = set;
console.log(s1, s2); // 1 w

const map = new Map().set("name", "tom").set("age", 15);
const newArr = [...map];
console.log(newArr);  // [ [ 'name', 'tom' ], [ 'age', 15 ] ]

const res = Array.from('hello');
console.log(res)  // [ 'h', 'e', 'l', 'l', 'o' ]

Promise.all和Promise.race
Promise.all和Promise.race的参数不仅可以是数组,还可以是其他的有迭代器接口的有序结构

Generator生成器

  • 基本使用
  • yield * 语法
  • yield遍历DOM

基本使用
生成器函数执行会生成一个迭代器

function* getResult() {
  yield 1;
  yield 2;
  yield 3;
}

const iterator = getResult();

for (let k of iterator) {
  console.log(k);
}

yield * 语法

yield * 后面跟具有迭代器接口的有序结构

function* getResult() {
  yield* [1, 2, 3, 4];
  yield* "abc";
}

const iterator = getResult();

for (let k of iterator) {
  console.log(k);
}

yield * 自定义迭代器

class GenIterator {
  constructor(data) {
    this.data = data;
  }

  *[Symbol.iterator]() {
    yield* this.data;
  }
}

const iterator = new GenIterator("7890");

for (let k of iterator) {
  console.log(k);  // 7 8 9 0
}

yield遍历DOM

function* traverse(elementList) {
  for (let ele of elementList) {
    yield ele;

    if (ele.children) {
      yield* traverse(ele.children);
    }
  }
}

const container = document.getElementById("container");
for (let node of traverse([container])) {
  console.log(node);
}
點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶(hù)
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消