时间:2022-10-16 11:23:34 | 栏目:JavaScript代码 | 点击:次
因为在JavaScript中字面量对象是不支持迭代的
第一种使用比较简单的遍历来实现
let obj = {uname: "zhangsan"}; obj[Symbol.iterator] = function () { const keys = Object.keys(this); let index = 0; return { next() { return { value: obj[keys[index++]], done: index > keys.length } } }; }; let iterator = obj[Symbol.iterator](); console.log(iterator.next()); //{value: 'zhangsan', done: false} obj.uname='sudongyu' iterator = obj[Symbol.iterator](); console.log(iterator.next()); //{value: 'sudongyu', done: false}
第二种使用生成器函数来实现
/** * 将{}对象转换为可迭代对象 */ function object2iterator(obj){ obj[Symbol.iterator]=function* () { let properties = Object.keys(this); for (let i of properties) { yield [i, this[i]]; } } return obj }
生成器详细API 请参考 mdn
以下纯个人理解,如果有歧义就当我放屁~ 哈哈哈
注意??:我还想表达以下几个观点:
总结