可迭代对象是指实现了迭代器协议(Iterator Protocol)的对象。迭代器协议要求对象包含一个名为[Symbol.iterator]的方法,该方法返回一个迭代器对象。迭代器对象包含一个next()方法,用于按照定义的顺序返回序列中的下一个值。
JavaScript中常见的可迭代对象:
数组(Array):
const myArray = [1, 2, 3, 4, 5];
for (const item of myArray) {
console.log(item);
}
字符串(String):
const myString = "Hello, World!";
for (const char of myString) {
console.log(char);
}
Map:
const myMap = new Map();
myMap.set("name", "Alice");
myMap.set("age", 25);
myMap.set("city", "New York");
for (const [key, value] of myMap) {
console.log(key, value);
}
Set:
const mySet = new Set([1, 2, 3, 4, 5]);
for (const item of mySet) {
console.log(item);
}
除了使用for…of循环遍历可迭代对象外,你还可以使用Symbol.iterator和next()方法手动迭代可迭代对象。例如:
const myArray = [1, 2, 3, 4, 5];
const iterator = myArray[Symbol.iterator]();
console.log(iterator.next()); // 输出:{ value: 1, done: false }
console.log(iterator.next()); // 输出:{ value: 2, done: false }
需要注意的是,不是所有JavaScript对象都是可迭代的。如果一个对象没有实现迭代器协议(没有[Symbol.iterator]方法),它将被视为不可迭代。