1. 程式人生 > 其它 >物件遍歷及其他方法

物件遍歷及其他方法

遍歷 for in 會遍歷出物件以及該物件原型鏈上的屬性名,for in 可以遍歷到myObject的原型方法method,如果不想遍歷原型方法和屬性的話,可以在迴圈內部判斷一下,hasOwnPropery方法可以判斷某屬性是否是該物件的例項屬性, for(key in obj),key是obj裡的屬性名,如果是陣列得到陣列的索引值

for of 獲取屬性值,

Object.keys() 是 ES5 新增的一個物件方法,該方法返回物件自身屬性名組成的陣列,它會自動過濾掉原型鏈上的屬性,

object.values獲取物件自身屬性值的一個數組,object.entries獲取一個數組,數組裡面小陣列,小陣列第一個值是屬性名,第二個值是屬性值,

for in 迴圈和 Object.keys() 方法都不會返回物件的不可列舉屬性,(物件裡面裝物件,這個物件的屬性名就是不可列舉的屬性)

// 建立一個物件並指定其原型,bar 為原型上的屬性
// baz 為物件自身的屬性並且不可列舉
const obj = Object.create({
bar: 'bar'
}, {
baz: {
value: 'baz',
enumerable: false
}
})

obj.foo = 'foo'

// 不包括不可列舉的 baz 屬性
Object.keys(obj).forEach((key) => {
console.log(obj[key]) // foo
})

// 包括不可列舉的 baz 屬性
Object.getOwnPropertyNames(obj).forEach((key) => {
console.log(obj[key]) // baz, foo
})

Object.getOwnPropertyNames()也是 ES5 新增的一個物件方法,該方法返回物件自身屬性名組成的陣列,包括不可列舉的屬性

Reflect.ownKeys() 方法是 ES2015 新增的靜態方法,該方法返回物件自身所有屬性名組成的陣列,包括不可列舉的屬性和 Symbol 屬性