使用场景

实现 Iterator

为不具备 Iterator 接口的对象提供遍历方法。

function* objectEntries(obj) {    const propKeys = Reflect.ownKeys(obj);    for (const propKey of propKeys) {        yield [propKey, obj[propKey]];    }} const jane = { first: 'Jane', last: 'Doe' };for (const [key,value] of objectEntries(jane)) {    console.log(`${key}: ${value}`);}// first: Jane// last: Doe

Reflect.ownKeys() 返回对象所有的属性,不管属性是否可枚举,包括 Symbol。

jane 原生是不具备 Iterator 接口无法通过 for... of遍历。这边用了 Generator 函数加上了 Iterator 接口,所以就可以遍历 jane 对象了。