var arr=["张三","李四","王五","赵六"];
let person = {
username: 'luohao',
password: '123456',
hometown: '湖北省'
}
//for ... of 专属于数组的遍历方式
for (var value of arr){
console.log(value);
}
for (let index in arr) {
console.log(index, " : ", arr[index]);
}
//for ... in 最佳于对象的遍历方式
for (let index in person) {
console.log(index, " : ", person[index]);
}
/*
for (var value of person){
//悲剧的诞生: person is not iterable
console.log(value);
}
*/
Object.keys(person).forEach(function(key) {
console.log(key, " : ", person[key]);
});
可以使用遍历对象的方式for ... in 来遍历数组,将数组看成是有索引下标和索引下标对应的值构成的键值对。
不可以使用遍历数组的方式 for ... of 来遍历对象。这是需要注意的一点,经常混淆。
Object.keys()获取的仅仅是实例对象的属性,原型中的属性不会获取到,可以看出for ... in 和 Object.keys()之间的区别。