js中for-in循环阐释--摘自《编写可维护的JavaScript》

for-in循环是用来遍历对象属性的。不用定义任何控制条件,循环将会有条不紊的遍历每个对象属性,并返回属性名而不是值。


for-in循环有一个问题,它不仅遍历对象的实例属性(instance  property),同样还遍历从原型继承来的属性。当遍历自定义对象的属性时,往往会因为意外的结果而终止。出于这个原因,最好用hasOwnProperty()方法来为for-in循环过滤出实例属性。看下面的例子:

 var prop;
var prop;

    for (prop in object) {//包含对原型链的遍历
        console.log("Property name is: " + prop);
        console.log("Property value is: " + object[prop]);
    }

推荐在for-in循环中使用hasOwnProperty(),除非你想查找原型链,这时就应当补充注释:

var prop;

    for (prop in object) {//包含对原型链的遍历
        console.log("Property name is: " + prop);
        console.log("Property value is: " + object[prop]);
    }
关于for-in循环,还有一点需要注意,即for-in循环是用来遍历对象的,一个常见的错误用法是用for-in循环来遍历数组成员,这种用法在Crockford的编程规范、Google的JavaScript的风格指南中是禁止的,因为这会造成潜在的错误。


你可能感兴趣的:(javascript)