Object的原型没有实现Symbol.iterator所以不算做可迭代对象。

以下哪些对象是Javascript内置的可迭代对象?

A
Array

B
Map

C
String

D
Object

正确答案:ABC

ES6 规定,默认的 Iterator 接口部署在数据结构的Symbol.iterator属性,或者说,一个数据结构只要具有Symbol.iterator属性,就可以认为是“可遍历的”(iterable)。

原生具备 Iterator 接口的数据结构如下。

Array Map Set String TypedArray 函数的 arguments 对象 NodeList 对象

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 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   龙陌  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示