一 媒介
紀錄javascript言語object範例的一些題目。
1. typeof []; // object
2. typeof {};// object
3. typeof null; //object
這裏講的是第二種狀況。
二 正文
1.for…in 會遍歷原型鏈上的屬性
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
2.for…in 遍歷的遞次不能保證
Properties order in objects is not guaranteed in JavaScript; you need to use an Array.
for…in 遍歷的遞次是按原理來說是依據湧現的先後遞次,然則各家瀏覽器遍歷遞次有所不同。
Chrome Opera 中運用 for-in 語句遍歷對象屬性時會遵照一個規律,它們會先提取一切 key 的 parseFloat 值為非負整數的屬性, 然後依據数字遞次對屬性排序起首遍歷出來,然後依據對象定義的遞次遍歷餘下的一切屬性。別的瀏覽器則完整依據對象定義的遞次遍歷屬性。
所以,遞次這類事,照樣要用數組來保證。
細緻請參考:JS對象遍歷遞次
三 跋文
參考鏈接:JS對象遍歷遞次