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的风格指南中是禁止的,因为这会造成潜在的错误。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值