首先了解一下for..of..: 它是es6新增的一個遍歷方法,但只限於迭代器(iterator), 因此普通的對象用for..of遍歷
是會報錯的。下面來講明一下如何用for..of..遍歷普通對象 😄es6
若是對象是一個類數組對象,那好辦,用
Array.from
轉成數組便可。數組
var obj = { 0:'one', 1:'two', length: 2 }; obj = Array.from(obj); for(var k of obj){ console.log(k) }
若是不是類數組對象,也有辦法,添加一個[Symbol.iterator]屬性,並指向一個迭代器便可。this
//方法一: var obj = { a:1, b:2, c:3 }; obj[Symbol.iterator] = function(){ var keys = Object.keys(this); var count = 0; return { next(){ if(count<keys.length){ return {value: obj[keys[count++]],done:false}; }else{ return {value:undefined,done:true}; } } } }; for(var k of obj){ console.log(k); }
// 方法二 var obj = { a:1, b:2, c:3 }; obj[Symbol.iterator] = function*(){ var keys = Object.keys(obj); for(var k of keys){ yield [k,obj[k]] } }; for(var [k,v] of obj){ console.log(k,v); }
好了,到這裏本文就結束了,你get到要點了嗎,若是以爲文章還能夠,就點個關注,收藏,推薦(素質三連)吧 😄code