调用[Symbol.iterator]()时不生成对象 [英] Object is not being produced on calling [Symbol.iterator]()
本文介绍了调用[Symbol.iterator]()时不生成对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是源代码:
const james = {
name: 'James',
height: `5'10"`,
weight: 185,
[Symbol.iterator]:function*(){
yield Object.keys(this) ;
}
};
const iterator = james[Symbol.iterator]();
//
console.log(iterator.next().value); // 'James'
console.log(iterator.next().value); // `5'10`
console.log(iterator.next().value); // 185
第一次调用 iterator.next()。value
应该是打印
{"value":"James","key":"name","done":false}
但它正在打印 {value:[name,height ,weight],done:false}
。如何解决这个问题?
but it is printing {"value":["name","height","weight"],"done":false}
. How to resolve this?
推荐答案
您产生
一次性所有密钥。意味着您的第一个 next
完成所有工作。您所需要的只是迭代密钥和 yield
seq中的它们uns。
You yield
all keys at once. Means that your first next
do all work. All you need is to iterate over the keys and yield
them in sequence.
const james = {
name: 'James',
height: `5'10"`,
weight: 185,
[Symbol.iterator]:function*(){
for(let key of Object.keys(this)) {
yield { propValue: this[key], propName: key};
}
}
};
const iterator = james[Symbol.iterator]();
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());
这篇关于调用[Symbol.iterator]()时不生成对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文