迭代器iterator
是一种 ES6 规范,具有这种机制的数据结构才可以使用for of
循环:返回每一项的值;
原型链具有Symbol.iterator
属性的数据结构都具备;如数组、部分类数组、字符串等;
普通对象就不能用;文章来源:https://www.toymoban.com/news/detail-604635.html
for-of循环原理:循环获取属性值;文章来源地址https://www.toymoban.com/news/detail-604635.html
- 执行可迭代原型链上的
Symbol.iterator
方法,该方法返回一个包含next方法
的对象; - 通过循环执行
next方法
,得到方法返回的对象,根据对象中值抛出返回值;
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
}
到了这里,关于【react】react18的学习(十二)– 底层原理(二)之 迭代器 iterator的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!