javascript - 通过 Symbol.iterator 的迭代不会发生
问题描述
Node.js v10.11.0
为什么我的代码中没有发生迭代?
'use strict';
const stuff = Object.create(null)
stuff.items = ['a','b','c','d']
stuff[Symbol.iterator] = function*(){
return this.items[Symbol.iterator]()
}
for(let n of stuff){
console.log(n) // It doesn't happen
}
解决方案
将stuff
迭代器设置为迭代items
器:
const stuff = Object.create(null)
stuff.items = ['a','b','c','d']
stuff[Symbol.iterator] = stuff.items[Symbol.iterator].bind(stuff.items);
for(let n of stuff){
console.log(n) // It doesn't happen
}
推荐阅读
- php - 将 sh+perl 脚本转换为 php 脚本
- excel - vba 从不规则列复制和粘贴
- typescript - 打字稿解构和隐式任何
- java - 如何修复 FasterXml Jackson 中的“属性的 getter 定义冲突”错误?
- java - 使用 thymeleaf 同时迭代两个列表
- r - 按 x 轴重新排序的 Rbokeh 条形图
- footer - PHPWord --> 如何在第一页上获得不同的页眉,但在所有页面上获得相同的页脚?
- mysql - 我有多个值(2 个不同)以及如何按顺序显示值?
- python - 如何使用 AWS Lambda Python 读取 AWS S3 存储的 Word 文档(.doc 和 .docx)文件内容?
- php - 突出显示 4 个连续匹配的单词