我想循環遍歷所有對象屬性。我試圖通過使用如何遍歷所有對象屬性
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
有沒有可能獲得所有房產? –
@JohnSmith - 是的,它是'Object.getOwnPropertyNames(obj);'但它在版本9之前不支持IE。 – kamituel
For/in運行在所有可枚舉的屬性上,包括那些從祖先原型繼承的屬性。如果你只是想要那些「你的對象」,使用Object.keys()
:
Object.keys(yourobject).forEach(function(propertyName) {
var value = yourobject[propertyName];
console.log(propertyName + ":", value);
});
這是一個非常有用的概念。謝謝。 – Jazzy
這是什麼__something__你得到? –
如果你正在迭代,也許你正在使用'hasOwnProperty',就像http://stackoverflow.com/a/921808/613130,所以你跳過了在「父」對象中定義的屬性。 – xanatos