J'ai un simple objet d'objets:Pourquoi ces propriétés ne sont-elles pas énumérables?
window.abilities = {
migrate:{
name:"Migrate",
description:"Move your tribe to another area; generate all new resources. Takes one time unit.",
image:"migrate.png",
action:"Migrate",
unlocked:true
},
eradicate:{
name:"Eradicate species",
description:"Remove a troublesome plant or animal",
image:"migrate.png",
action:"Eradicate",
unlocked:false
}
}
J'utilise un ... dans ... boucle pour itérer sur cet objet et générer des éléments d'interface utilisateur:
for(ability in window.abilities){
if(ability.unlocked){
$("#abilities").append(genAbilityCard(ability.name,ability.image,ability.description,ability.action));
}
}
Cependant, chaque La variable de capacité est vide - elle n'a que la clé et non les propriétés (nom, description, etc.). Ces propriétés semblent être insignifiantes - même si les propriétés créées de cette façon devraient être énumérables par défaut!
Comment est-ce que je peux implicitement rendre ces propriétés implicites, sans utiliser Object.defineProperty ou quelque chose d'aussi compliqué que cela?
Copie possible de [Comment faire une boucle ou énumérer un objet JavaScript?] (Https://stackoverflow.com/questions/684672/how-do-i-loop-through-or-enumerate-a-javascript- objet). C'est une question ancienne et bien répondue, la boucle ne vous donne que les clés. –