答案:通过实现 Symbol.iterator 方法可使对象可迭代,该方法返回带有 next() 的迭代器对象,从而支持 for...of 和扩展运算符。示例中遍历 data 数组返回值和 done 状态。

在 JavaScript 中,可以通过 Symbol.iterator 来自定义对象的迭代行为。只要一个对象实现了 Symbol.iterator 方法,就可以被 for...of 循环、扩展运算符等迭代语法使用。
要让一个对象可迭代,需要给它添加一个返回迭代器对象的 Symbol.iterator 方法。这个方法应返回一个带有 next() 方法的对象。
示例:const myIterable = {
data: ['a', 'b', 'c'],
[Symbol.iterator]() {
let index = 0;
return {
next: () => {
if (index < this.data.length) {
return { value: this.data[index++], done: false };
} else {
return { done: true };
}
}
};
}
};
<p>// 使用 for...of 遍历
for (const item of myIterable) {
console.log(item); // 输出: a, b, c
}一旦对象实现了 Symbol.iterator,就能用于各种需要可迭代对象的场合。
这本书假定你没有任何关于脚本或一般程序的编程知识, 但是如果你具备相关的知识, 那么你将很容易就能够达到中高级的水平. . . 所有这些只是UNIX®浩瀚知识的一小部分. 你可以把本书作为教材, 自学手册, 或者是关于shell脚本技术的文档. 书中的练习和样例脚本中的注释将会与读者进行更好的互动, 但是最关键的前提是: 想真正学习脚本编程的唯一途径就是亲自动手编写脚本. 这本书也可作为教材来讲解一般的编程概念. 向伟大的中华民族的Linux用户致意! 我希望这本书能够帮助你们学习和理解L
20
console.log([...myIterable]); // ['a', 'b', 'c'] const [first] = myIterable; console.log(first); // 'a'
使用生成器函数(function*)可以更简洁地实现自定义迭代。
const customCollection = {
items: [1, 2, 3, 4],
*[Symbol.iterator]() {
for (let x of this.items) {
yield x * 2; // 可以处理数据再输出
}
}
};
<p>console.log([...customCollection]); // [2, 4, 6, 8]基本上就这些。通过定义 Symbol.iterator,你可以控制任何对象如何被遍历,无论是简单列表还是复杂数据结构。关键是返回一个符合迭代器协议的对象,或者直接用生成器函数简化逻辑。不复杂但容易忽略细节是 done 和 value 的正确返回方式。
以上就是js中如何自定义迭代行为的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号