Javascript 如何遍历所有对象属性

Javascript 如何遍历所有对象属性,javascript,object,Javascript,Object,我要遍历所有对象属性。我试着通过使用 for( var key in obj) 但这并没有给我所有的属性。例如,没有“单击”键。但是当我试着去做的时候 obj['click'] 我有东西 我正试图在IE7上为..做这件事。。在中,循环迭代所有可枚举的属性,而不是所有属性 因此,我怀疑单击不可枚举,或者您遗漏了什么 有关如何设置属性的示例,该属性将无法通过的for。。在循环中: var obj = {}; Object.defineProperty(obj, "stealth", { e

我要遍历所有对象属性。我试着通过使用

for( var key in obj)
但这并没有给我所有的属性。例如,没有“单击”键。但是当我试着去做的时候

obj['click']
我有东西


我正试图在IE7上为..做这件事。。在中,循环迭代所有可枚举的属性,而不是所有属性

因此,我怀疑
单击不可枚举,或者您遗漏了什么

有关如何设置属性的示例,该属性将无法通过的
for。。在
循环中:

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.propertyEnumerable()
方法测试属性是否可枚举(即在
for..in
循环中可访问):

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

For/in运行在所有可枚举属性上,包括从祖先原型继承的属性。如果您只想为“您的对象”使用这些键,请使用
object.keys()


你得到的是什么?如果你迭代正确,也许你使用的是
hasOwnProperty
,比如,你跳过了在“父”对象中定义的属性。有可能得到所有属性吗?@JohnSmith-是的,它是
Object.getOwnPropertyNames(obj)但在版本9之前的IE不支持它。这是一个非常有用的概念。非常感谢。
Object.keys(yourobject).forEach(function(propertyName) {
  var value = yourobject[propertyName];
  console.log(propertyName + ":", value);
});