首页前端开发正文

for in循环遍历对象

朱绪2022-03-08641JavaScript

我们可以使用 for...in 循环来遍历一个对象的属性:

for(var key in obj) {
  console.log(key + ":" + obj[key]);
}

再来个例子,帮助大家更好地理解for...in。

let obj = {name: 'Andy', age: 18};
Object.defineProperty(obj, 'gender', {
  value: 'male',
  enumerable: false
});

for(let key in obj) {
  if(obj.hasOwnProperty(key)) {
    console.log(key + ":" + obj[key]);
  }
}
// name:Andy
// age:18

为什么gender这个属性没被打印出来呢?

原因在于,gender是“不可枚举属性”。

值得一提的是,for...in可以遍历获取一个对象从父类继承来的属性。

所以很多时候我们会使用hasOwnProperty方法来检查某个属性是不是这个对象自身具有的(而非继承来的)。