如何遍历所有对象属性

时间:2013-08-31 13:51:28

标签: javascript object

我希望遍历所有对象。我试图通过使用

来做到这一点
for( var key in obj)

但那并没有给我所有的财产。例如,没有关键的“点击”。但是当我尝试做的时候

obj['click']

我得到了一些东西。

我试图在IE7上执行此操作

2 个答案:

答案 0 :(得分:3)

for .. in循环遍历所有enumerable属性,而不是遍历所有属性。

所以我怀疑click不是可枚举的,或者你错过了什么。

如何设置通过for .. in循环无法使用的属性的示例:

var obj = {};

Object.defineProperty(obj, "stealth", {
  enumerable: false,
  value: "you don't iterate over me"
});

// obj.stealth === "you don't iterate over me"

for (var i in obj) {
  // Loop will not enter here
}

您可以使用for .. in方法测试属性是否可枚举(即可在Object.propertyIsEnumerable()循环中访问):

obj.propertyIsEnumerable('stealth') === false

答案 1 :(得分:1)

For / in遍历所有可枚举属性,包括从祖先原型继承的属性。如果您只想要“您的对象”,请使用Object.keys()

Object.keys(yourobject).forEach(function(propertyName) {
  var value = yourobject[propertyName];
  console.log(propertyName + ":", value);
});