for
用来遍历数组对象的
var array= ["a","b","c","d"];
for(var i = 0 ; i < array.length ; i++){
console.log(i + " ===> " +array[i]);
}
for-in
用来遍历非数组对象
var object = {"a":"aa","b":"bb","c":"cc"}
for(var k in object){
console.log(k + " ===> " + object[k]);
}
如果给内置原型添加属性后
Object.prototype.Test = function(){};
for
输出结果
for-in
输出结果
可以看到for-in
将原型属性也遍历出来了.
如果你只想获取当前对象的私有属性可以加上hasOwnProperty
过滤
for(var k in object){
if(object.hasOwnProperty(k)){
console.log(k + " ===> " + object[k]);
}
}
过滤后只打印出object
私有的属性
总结
- 一般的情况下 for是用来遍历数组的 , for-in用来遍历对象 .
- 如果在当前环境中有对内置对象添加自定义属性 , 那么可以用
hasOwnProperty
来过滤 , 只遍历对象的私有属性 .