我有对象的简单对象:为什么这些属性不能枚举?
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
}
}
我使用的是为... ...在循环遍历该对象,并生成UI元素:
for(ability in window.abilities){
if(ability.unlocked){
$("#abilities").append(genAbilityCard(ability.name,ability.image,ability.description,ability.action));
}
}
然而,每个能力变量是空的 - 它只有键而不是属性(名称,描述等等)。这些属性看起来是不可数的 - 即使以这种方式创建的属性在默认情况下应该是可枚举的!
如何隐式地使这些属性枚举,而不使用Object.defineProperty或类似的笨拙东西?通过使用for..of
和Object.values
可能的重复[如何循环或枚举JavaScript对象?](https://stackoverflow.com/questions/684672/how-do-i-loop-through-or-enumerate-a-javascript-目的)。这是一个古老而且很好回答的问题,循环只能让你获得钥匙。 –