在es6中提供了for-of,可以很方便的遍歷陣列和類陣列,但是卻不能遍歷物件,這是為什麼,與for-in僅僅相差乙個單詞,用途也是遍歷,為什麼卻不能使用在物件上?
查資料後得知,原來es6中引入了iterator,只有提供了iterator介面的資料型別才可以使用for-of來迴圈遍歷,而array、set、map、某些類陣列如arguments等資料型別都預設提供了iterator介面,所以它們可以使用for-of來進行遍歷
那麼原因清楚了,該怎麼解決呢?能不能為物件已經其它的一些資料型別提供iterator介面呢
答案是可以的,es6同時提供了symbol.iterator屬性,只要乙個資料結構有這個屬性,就會被視為有iterator介面,接著就是如何實現這個介面了,如下就是乙個最簡實現:
newobj[symbol.iterator] = function();
}else}}
};};
ES6中for in和for of的區別
1 for in遍歷的是陣列的索引 即鍵名 而 for of遍歷的是陣列元素值。2 for in會遍歷陣列所有的可列舉屬性,包括原型。for of遍歷的只是陣列內的元素,而不包括陣列的原型 3 for in遍歷順序有可能不是按照實際陣列的內部順序 for var key of object.keys...
關於ES6中for of和for in的理解
關於es6中for of和for in的理解 簡單理解 for in 語句用於迴圈物件屬性。迴圈中的 每執行一次,就會對陣列的元素或者物件的屬性進行一次操作。區別如下 1 遍歷陣列 for of迴圈 var arr 7,2,6,4,5,6,7 申明乙個陣列 for var value of arr ...
關於ES6中for of和for in得問題
整理了一下關於es6中for in和for of得筆記 for in 迴圈讀取鍵名,for of 迴圈讀取鍵值。如果要通過for of 迴圈,獲取陣列索引,可以借助資料例項的entries方法和keys方法。set map也可使用for of 迴圈。首先,遍歷的順序是按照各個成員被新增進資料結構的順...