15

根据for each...in loop的 MDN 页面,此构造已被弃用。有没有做同样事情的替代品?for...of 循环不会迭代非整数(自己的可枚举)属性。如果没有替代方案,那么他们为什么要弃用它呢?

4

3 回答 3

17

要遍历对象的所有属性obj,您可以这样做:

for (var key in obj) {
   console.log(key, obj[key]);
}

如果你想避免继承属性,你可以这样做:

for (var key in obj) {
   if (!obj.hasOwnProperty(key)) continue;
   console.log(key, obj[key]);
}
于 2012-09-28T09:30:45.597 回答
12

您可以使用新的ECMAScript 5th Edition函数:

Object.keys(obj).forEach(function (key) {
    console.log(key, obj[key]);
});
于 2012-09-28T09:50:06.947 回答
3

有没有做同样事情的替代品?

一个for ... in循环,你在代码块中做的第一件事就是复制foo[propertyname]到一个变量。

于 2012-09-28T09:30:49.480 回答