給js對象添加迭代器,讓對象也可以使用 for...of


// 用generator函數,返回[key,value]
Object.prototype[Symbol.iterator] = function* iterEntries() {
    let keys = Object.keys(this);
    for (let i = 0; i < keys.length; i++) {
        let key = keys[i];
        yield [key, obj[key]];
    }
}

// 普通函數, ,返回[key,value]
Object.prototype[Symbol.iterator] = function () {
    const keys = Object.keys(this);
    let index = 0;
    return {
        next: () => {
            return {
                value: [keys[index], this[keys[index++]]], // 每次迭代的結果
                done: index > keys.length // 迭代結束標識 false停止迭代,true繼續迭代
            };
        }
    }
}

var obj = { a: 'hello', b: 'world', c: 'hello world' }


for (let [key, value] of obj) {
    console.log(key, value);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM