对象属性迭代
枚举对象属性的几个方法
- for .. in
- object.keys()
- object.getOwnPropertyNames()
- for … of
for in
for . . in 循环可以遍历对象中所有可枚举的属性(对象自身属性和继承而来的属性),遍历出的属性因为浏览器的差异而有可能顺序不同12345678var obj = { 'x' : 1, 'y' : 2, 'z' : 3}for (pro in obj ){ console.log(pro)}
for .. in 循环的主要目的是遍历对象的实例属性,一般都会使用hasOwnProperty()进行过滤123for (pro in obj) { if (!obj.hasOwnProperty (pro)) 跳过继承的属性}
Object.keys()
Object.keys()方法返回一个给定对象自身可枚举属性名组成的数组,跟for in 的区别就在于 for in还可以枚举出继承而来的可枚举属性123456var 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等),获取对象的属性值