對象遍歷
阿新 • • 發佈:2018-12-09
ref 後來 過濾 三種 表示 轉換 org npr 所有 然而實際上在javascript中會被轉換成為
恩,接下裏在繼續談到數組的遍歷問題。
實際上對於數組的遍歷也可以使用
當然一般我們是不希望他遍歷對象的原型的,我們只希望遍歷這個對象本身具有的屬性,所以這是後就要用到了
在數組中常用的遍歷方法有for
for in
for of
這三種,前兩種是遍歷數組的下標,然後再通過數組下標來訪問數組的元素。其實對象意識相似的。
讓我們來看一下數組以及對象的代碼表示。
// Array
let arr = ["bob", "18", "man"];
// Object
let obj = {
name: "bob",
age: "18",
sex: "man"
}
可以看到他們其實都是一組數據的集合,並且都是一組數據的集合,且不同元素之間都是使用逗號進行分割,唯一的區別就只是對象是使用花括號包裹著的,然後數組是使用 方括號包裹著的,再就是對象是通過屬性名(字符串)進行訪問,而對象是通過數組下標(數字)來進行訪問的。然而還有一點就是一般我們訪問對象屬性的方式都是通過object.property
object["property"]
,所以我們是不是可以這麽理解,所謂對象,實際上就上一種特殊的數組。恩,接下裏在繼續談到數組的遍歷問題。
實際上對於數組的遍歷也可以使用
for in
for of
這兩種方法,前者嘛就是通過訪問對象的屬性名然後來遍歷對象,但是這有一種缺陷,就是對於對象的原型他會一直訪問下去,一直到object.prototype
也就是一直到對象原型的終點。當然一般我們是不希望他遍歷對象的原型的,我們只希望遍歷這個對象本身具有的屬性,所以這是後就要用到了
object
的hasOwnProperty方法,任何的對象都會從原型鏈上繼承這個方法,但是這個方法時不受到JavaScript保護的。所有繼承了
Object
的對象都會繼承到hasOwnProperty
方法。這個方法可以用來檢測一個對象是否含有特定的自身屬性;和in
運算符不同,該方法會忽略掉那些從原型鏈上繼承到的屬性。
這是MDN對這個方法的描述,具體可見Object.prototype.hasOwnProperty
可以使用這個方法來過濾原型鏈上的屬性,這是很實用的。
對象遍歷