我希望遍历所有对象。我试图通过使用
来做到这一点for( var key in obj)
但那并没有给我所有的财产。例如,没有关键的“点击”。但是当我尝试做的时候
obj['click']
我得到了一些东西。
我试图在IE7上执行此操作
答案 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);
});