【发布时间】:2017-12-05 23:03:30
【问题描述】:
我有一个简单的对象对象:
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
}
}
我正在使用 for ... in ... 循环来迭代这个对象并生成 UI 元素:
for(ability in window.abilities){
if(ability.unlocked){
$("#abilities").append(genAbilityCard(ability.name,ability.image,ability.description,ability.action));
}
}
但是,每个能力变量都是空的——它只有键,没有属性(名称、描述等)。这些属性似乎是不可枚举的——尽管以这种方式创建的属性在默认情况下应该是可枚举的!
如何在不使用 Object.defineProperty 或类似的笨方法的情况下使这些属性可隐式枚举?
【问题讨论】:
-
How do I loop through or enumerate a JavaScript object? 的可能重复项。这是一个古老且得到很好回答的问题,循环只会为您提供密钥。
标签: javascript object enumerable