如何遍历所有对象属性

How to Iterate through all object properties

本文关键字:对象 属性 遍历 何遍历      更新时间:2023-09-26

我希望遍历所有对象属性。我试图通过使用来做到这一点

for( var key in obj)

但这并没有给我所有的财产。例如,没有键"click"。但当我尝试做时

obj['click']

我得到了一些东西。

我正在尝试在IE7 上执行此操作

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
}

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

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

For/in运行在所有可枚举属性上,包括从祖先原型继承的属性。如果你只想为"你的对象"使用Object.keys():

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