Object的原型没有实现Symbol.iterator所以不算做可迭代对象。
以下哪些对象是Javascript内置的可迭代对象?
A
Array
B
Map
C
String
D
Object
正确答案:ABC
ES6 规定,默认的 Iterator 接口部署在数据结构的Symbol.iterator属性,或者说,一个数据结构只要具有Symbol.iterator属性,就可以认为是“可遍历的”(iterable)。
原生具备 Iterator 接口的数据结构如下。
JavaScript的可迭代对象
1)数组Arrays
console.log([][Symbol.iterator])
for(let x of ['a','b'])
console.log(x)
2)字符串Strings
console.log(""[Symbol.iterator])
for(let x of "abc")
console.log(x)
3)Map
let map = new Map().set('a', 1).set('b', 2);
console.log(map[Symbol.iterator]);
for (let pair of map) {
console.log(pair);
}
4)Set
let set = new Set().add('a').add('b');
for (let x of set) {
console.log(x);
}
5)arguments
function printArgs() {
for (let x of arguments) {
console.log(x);
}
}
printArgs('a', 'b');
6)Typed Arrays
7)Generators,ES6新增加
js内置的可迭代对象:
Array,Map,Set,String,TypedArray,函数的 arguments 对象,NodeList 对象。
Object的原型没有实现Symbol.iterator所以不算做可迭代对象。
Object的属性是没有先后顺序的,要开发者自己指定遍历顺序,这是没有内置Iterator的原因之一。
另外就是es6的map已经满足了需要迭代Object的场景,不需要再给Object实现该方法。
__EOF__

本文链接:https://www.cnblogs.com/longmo666/p/17835170.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)