我想遍历所有对象属性。我试图通过使用来做到这一点
for( var key in obj)
但这并没有给我所有的属性。例如,没有“点击”键。但是当我尝试做
obj['click']
我得到了一些东西。
我正在尝试在 IE7 上执行此操作
我想遍历所有对象属性。我试图通过使用来做到这一点
for( var key in obj)
但这并没有给我所有的属性。例如,没有“点击”键。但是当我尝试做
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
}
您可以使用以下方法测试属性是否可枚举(即可以在for .. in
循环中访问)Object.propertyIsEnumerable()
:
obj.propertyIsEnumerable('stealth') === false
For/in 运行所有可枚举的属性,包括从祖先原型继承的那些。如果您只想要“您的对象”的那些,请使用Object.keys()
:
Object.keys(yourobject).forEach(function(propertyName) {
var value = yourobject[propertyName];
console.log(propertyName + ":", value);
});