for...in循环用来遍历一个对象的全部属性。
var o = {a:1, b:2, c:3};
for (i in o){
console.log(o[i]);
}
// 1
// 2
// 3
注意,for...in循环遍历的是对象所有可enumberable的属性,其中不仅包括定义在对象本身的属性,还包括对象继承的属性。
function Person(name) {
this.name = name;
}
Person.prototype.describe = function () {
return 'Name: '+this.name;
};
var person = new Person('Jane');
for (var key in person) {
console.log(key);
}
// name
// describe
上面代码中,name是对象本身的属性,describe是对象继承的属性,for-in循环的遍历会包括这两者。
如果只想遍历对象本身的属性,可以使用hasOwnProperty方法,在循环内部做一个判断。
for (var key in person) {
if (person.hasOwnProperty(key)) {
console.log(key);
}
}
// name