記錄javascript語言object類型的一些問題。javascript
1. typeof []; // object 2. typeof {};// object 3. typeof null; //object
這裏講的是第二種狀況。java
class Super{ constructor(val){ this.value=val; } }; const suber = { value:'suber' }; suber.prototype = new Super('super'); for(attr in suber){ const val = suber[attr] console.log('attr-val=>',attr,val); //attr-val=> value suber attr-val=> prototype Super {value: "super"} }
這個問題不少人都應該知道。解決的辦法也不少:
1) 使用hasOwnProperty(attr) 來取自有屬性的值
2) 使用Object.keys(object) 來取得全部的自有屬性key,而後object[key]來取得value數組
Properties order in objects is not guaranteed in JavaScript; you need to use an Array.瀏覽器
for...in 遍歷的順序是按道理來說是按照出現的前後順序,可是各家瀏覽器遍歷順序有所不一樣。this
Chrome Opera 中使用 for-in 語句遍歷對象屬性時會遵循一個規律,它們會先提取全部 key 的 parseFloat 值爲非負整數的屬性, 而後根據數字順序對屬性排序首先遍歷出來,而後按照對象定義的順序遍歷餘下的全部屬性。其它瀏覽器則徹底按照對象定義的順序遍歷屬性。prototype
因此,順序這種事,仍是要用數組來保證。code
詳細請參考:JS對象遍歷順序對象
參考連接:JS對象遍歷順序排序