すべてのオブジェクト プロパティを繰り返し処理します。私はこれを使用してこれをやろうとしていました
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);
});