3 votes

Comment itérer à travers toutes les propriétés d'un objet

Je veux itérer à travers toutes les propriétés de l'objet. J'ai essayé de le faire en utilisant

for( var key in obj)

Mais ça ne m'a pas donné toutes les propriétés. Par exemple, il n'y a pas de touche 'click'. Mais quand j'essaie de faire

obj['click']

J'ai quelque chose.

J'essaie de faire cela sur IE7

3voto

kamituel Points 11036

Le site for .. in La boucle itère sur toutes les enumerable et non sur toutes les propriétés.

Donc je soupçonnerais soit le click n'est pas énumérable ou vous avez manqué quelque chose.

Exemple de la façon de définir une propriété qui ne sera pas disponible via la page d'accueil. for .. in boucle :

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
}

Vous pouvez vérifier si une propriété est énumérable (c'est-à-dire qu'elle sera accessible dans une for .. in boucle) en utilisant Object.propertyIsEnumerable() méthode :

obj.propertyIsEnumerable('stealth') === false

1voto

For/in passe en revue toutes les propriétés énumérables, y compris celles héritées des prototypes ancêtres. Si vous ne voulez que celles de "votre objet", utilisez Object.keys() :

Object.keys(yourobject).forEach(function(propertyName) {
  var value = yourobject[propertyName];
  console.log(propertyName + ":", value);
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X