迭代器iterator
是一種 ES6 規(guī)范,具有這種機(jī)制的數(shù)據(jù)結(jié)構(gòu)才可以使用for of
循環(huán):返回每一項(xiàng)的值;
原型鏈具有Symbol.iterator
屬性的數(shù)據(jù)結(jié)構(gòu)都具備;如數(shù)組、部分類數(shù)組、字符串等;
普通對(duì)象就不能用;文章來源:http://www.zghlxwxcb.cn/news/detail-604635.html
for-of循環(huán)原理:循環(huán)獲取屬性值;文章來源地址http://www.zghlxwxcb.cn/news/detail-604635.html
- 執(zhí)行可迭代原型鏈上的
Symbol.iterator
方法,該方法返回一個(gè)包含next方法
的對(duì)象; - 通過循環(huán)執(zhí)行
next方法
,得到方法返回的對(duì)象,根據(jù)對(duì)象中值拋出返回值;
let obj = {
name: 'aa',
age: 10,
}
Object.prototype[Symbol.iterator] = function iterator() {
let self = this,
index = -1,
keys = Reflect.ownKeys(self)
console.log(keys) // ['name', 'age']
return {
next() {
index++
if (index > keys.length - 1) {
return {
done: true,
value: undefined,
}
}
return {
done: false,
value: self[keys[index]],
}
},
}
}
for (const iterator of obj) {
console.log(iterator) // aa 10
}
到了這里,關(guān)于【react】react18的學(xué)習(xí)(十二)– 底層原理(二)之 迭代器 iterator的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!