-
for-in是js中最常见的迭代语句,常常用来枚举对象的属性。某些情况下,可能按照随机顺序便利数组元素。
-
Object构造器有一个实例属性keys,则可以返回以对象的属性为元素的数组。数组中属性名的顺序跟使用for-in遍历返回的顺序是一样的。
-
for-in 循环会枚举对象原型链上的可枚举属性,而Object.keys不会
for in
- 遍历对象及其原型链上的可枚举的属性
- 如果用于遍历数组,除了遍历其元素外,还会遍历开发者对数组对象自定义的可枚举属性及其原型链上的可枚举属性
- 遍历对象返回属性名和遍历数组返回的索引都是string类型
- 某些情况下,可能按随机顺序遍历数组元素
Array.prototype.getLength=function(){
return this.length;
}
var arr=['a','b','c'];
arr.name='jj';
Object.defineProperty(arr,'age',{
enumerable:true,
value:5,
writable:true,
configurable:true
});
for(var i in arr){
console.log(i);
}
不推荐在数组中使用for in 遍历
Object.keys
- 返回对象自身可枚举属性组成的数组
- 不会遍历对象原型链上的属性以及Symbol属性
- 对数组的遍历顺序和for in 一致