我们可以使用 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方法来检查某个属性是不是这个对象自身具有的(而非继承来的)。