Javascript 對象那些事(延續更新)

一 媒介

紀錄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對象遍歷遞次

    原文作者:specialCoder
    原文地址: https://segmentfault.com/a/1190000014640897
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞