ES6 迭代器

把一个对象变成可迭代对象

 

let authors = {
        allAuthors: {
            fiction: ['Agla', 'Skks', 'LP'],
            scienceFiction: ['Neal', 'Arthru', 'Ribert'],
            fantasy: ['J.R.Tole', 'J.M.R', 'Terry P.K']
        },
        Addres: []
    }

    authors[Symbol.iterator] = function * () {
        let allAuthors = this.allAuthors
        let keys = Reflect.ownKeys(allAuthors)
        let values = []
        while (1) {
            if (keys.length > 0) {
                yield * allAuthors[keys[0]]
                keys.shift()
            } else {
                break
            }
        }
    }

    for (let v of authors) {
        console.log(v)
    }

 

将authos里面的allAuthors对象的值变为可迭代对象,并且全部遍历取出

注意点:

1. Symbol.iterator是固定写法,内部传入一个生成器即可。
posted @ 2020-07-21 15:55  厦门第一帅哥  阅读(89)  评论(0)    收藏  举报