我希望你能遍历所有对象属性。我尝试使用以下方法来实现:
for( var key in obj)
但那并没有给我所有的属性。例如,没有键“click”。但是,当我尝试执行
obj['click']
我有一个问题。
我正在尝试在IE7上完成这个操作。
for( var key in obj)
但那并没有给我所有的属性。例如,没有键“click”。但是,当我尝试执行
obj['click']
我有一个问题。
我正在尝试在IE7上完成这个操作。
for .. in
循环遍历所有可枚举
属性,而不是所有属性。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
Object.getOwnPropertyNames(obj);
但在IE 9之前的版本不支持。 - kamituelfor/in循环遍历所有可枚举属性,包括从祖先原型继承的属性。如果您只想获取“您的对象”的属性,请使用Object.keys()
:
Object.keys(yourobject).forEach(function(propertyName) {
var value = yourobject[propertyName];
console.log(propertyName + ":", value);
});
hasOwnProperty
,例如https://dev59.com/pXNA5IYBdhLWcg3wh-cC#921808,因此跳过在“父”对象中定义的属性。 - xanatos