根据for each...in loop的MDN页面,不推荐使用此结构。是否存在完全相同的替代方案? for...of loop不会迭代非整数(自己的可枚举)属性。如果没有其他选择,为什么他们会弃用它呢?
答案 0 :(得分:15)
要迭代对象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]);
}
答案 1 :(得分:12)
您可以使用新的 ECMAScript第5版功能:
Object.keys(obj).forEach(function (key) {
console.log(key, obj[key]);
});
答案 2 :(得分:3)
是否存在完全相同的替代方案?
for ... in
循环,其中您在代码块中执行的第一件事就是将foo[propertyname]
复制到变量。