对象属性迭代

Author Avatar
Orange 1月 19, 2017

枚举对象属性的几个方法

  • for .. in
  • object.keys()
  • object.getOwnPropertyNames()
  • for … of

for in

for . . in 循环可以遍历对象中所有可枚举的属性(对象自身属性和继承而来的属性),遍历出的属性因为浏览器的差异而有可能顺序不同

1
2
3
4
5
6
7
8
var obj = {
'x' : 1,
'y' : 2,
'z' : 3
}
for (pro in obj ){
console.log(pro)
}

for .. in 循环的主要目的是遍历对象的实例属性,一般都会使用hasOwnProperty()进行过滤

1
2
3
for (pro in obj) {
if (!obj.hasOwnProperty (pro)) 跳过继承的属性
}

Object.keys()

Object.keys()方法返回一个给定对象自身可枚举属性名组成的数组,跟for in 的区别就在于 for in还可以枚举出继承而来的可枚举属性

1
2
3
4
5
6
var obj = {
'x' : 1,
'y' : 2,
'z' : 3
}
console.log(Object.keys(obj))

Object.getOwnPropertyNames()

Object.getOwnPropertyNames()方法返回指定对象所有属性组成的数组(包含可枚举和不可枚举的属性)

for .. of

for .. of 是ES6中新增的方法,用来遍历可迭代对象(Array,Map,Set,Arguments等),获取对象的属性值