目录为什么要实现自定义迭代器如何实现javascript字面量对象迭代实现方法解析为什么生成器函数要这样设计为什么要实现自定义迭代器 因为在JavaScript中字面量对象是不支持迭
因为在JavaScript中字面量对象是不支持迭代的
第一种使用比较简单的遍历来实现
let obj = {uname: "zhangsan"};
obj[Symbol.iterator] = function () {
const keys = Object.keys(this);
let index = 0;
return {
next() {
return {
value: obj[keys[index++]],
done: index > keys.length
}
}
};
};
let iterator = obj[Symbol.iterator]();
console.log(iterator.next());
//{value: 'zhangsan', done: false}
obj.uname='sudongyu'
iterator = obj[Symbol.iterator]();
console.log(iterator.next());
//{value: 'sudongyu', done: false}
第二种使用生成器函数来实现
function object2iterator(obj){
obj[Symbol.iterator]=function* () {
let properties = Object.keys(this);
for (let i of properties) {
yield [i, this[i]];
}
}
return obj
}
生成器详细api 请参考 mdn
以下纯个人理解,如果有歧义就当我放屁~ 哈哈哈
注意⚠️:我还想表达以下几个观点:
到此这篇关于如何优雅迭代JavaScript字面对象的文章就介绍到这了,更多相关迭代js字面对象内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: 详解如何优雅迭代JavaScript字面对象
本文链接: https://lsjlt.com/news/149751.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-01-12
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0