1. 程式人生 > >對象遍歷

對象遍歷

ref 後來 過濾 三種 表示 轉換 org npr 所有

在數組中常用的遍歷方法有for for in for of這三種,前兩種是遍歷數組的下標,然後再通過數組下標來訪問數組的元素。其實對象意識相似的。
讓我們來看一下數組以及對象的代碼表示。

    // Array
    let arr = ["bob", "18", "man"];

    // Object
    let obj = {
        name: "bob",
        age: "18",
        sex: "man"
    }

可以看到他們其實都是一組數據的集合,並且都是一組數據的集合,且不同元素之間都是使用逗號進行分割,唯一的區別就只是對象是使用花括號包裹著的,然後數組是使用 方括號包裹著的,再就是對象是通過屬性名(字符串)進行訪問,而對象是通過數組下標(數字)來進行訪問的。然而還有一點就是一般我們訪問對象屬性的方式都是通過object.property

然而實際上在javascript中會被轉換成為object["property"],所以我們是不是可以這麽理解,所謂對象,實際上就上一種特殊的數組。
恩,接下裏在繼續談到數組的遍歷問題。
實際上對於數組的遍歷也可以使用for in for of這兩種方法,前者嘛就是通過訪問對象的屬性名然後來遍歷對象,但是這有一種缺陷,就是對於對象的原型他會一直訪問下去,一直到object.prototype也就是一直到對象原型的終點。
當然一般我們是不希望他遍歷對象的原型的,我們只希望遍歷這個對象本身具有的屬性,所以這是後就要用到了object的hasOwnProperty方法,任何的對象都會從原型鏈上繼承這個方法,但是這個方法時不受到JavaScript保護的。

所有繼承了 Object 的對象都會繼承到 hasOwnProperty方法。這個方法可以用來檢測一個對象是否含有特定的自身屬性;和 in運算符不同,該方法會忽略掉那些從原型鏈上繼承到的屬性。

這是MDN對這個方法的描述,具體可見Object.prototype.hasOwnProperty
可以使用這個方法來過濾原型鏈上的屬性,這是很實用的。

對象遍歷