對象遍歷

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

// 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保護的。java

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

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

相關文章
相關標籤/搜索