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);
});