【发布时间】:2015-02-26 01:16:45
【问题描述】:
我一直在使用 html、css 和 javascript 创建一个口袋妖怪统计计算器供我个人使用。该代码大部分都有效,我的问题是基于它的特定部分。
var Natures = { 'Adamant':{'pos':'Atk', 'neg':'SpA'} }
上图是一个存储自然数据的对象示例(每种自然将一个属性提高 10%,并将另一个属性降低相同的数量)。自然值是具有属性的对象,这些属性表示它们正在提升和减少的统计数据。我的问题在于以下代码:
if(Natures.hasOwnProperty(nature)) {
var plus = eval(Natures.nature['pos']);
var minus = eval(Natures.nature['neg']);
base.plus = Math.floor(base.plus*1.1);
base.minus = Math.floor(base.minus*0.9);
}
if 语句位于修改对象 (base) 并输出其值(6 个统计数据各一个)的函数内部。 if 语句检查 Natures 对象中的特定 nature (作为函数参数给出的字符串)。
经过一些测试,我确信 if 语句可以正常工作。问题在于接下来的两行。它们旨在访问自然的 pos 和 neg 值并将它们存储为 plus 和 minus。 eval() 在那里,所以我可以使用 plus 和 minus 来访问和修改 base 的适当值,它们不是字符串。
我检查了一下,没有发现我的语法有任何问题。我也确定我已经在上面发布的代码中隔离了问题。 nature 不在 Natures 中,该函数运行良好。另外,我只在 Chrome(版本 40.0.2214.115)中对此进行了测试,所以它可能是浏览器。
【问题讨论】:
-
不,你不想使用
eval。当然不是。
标签: javascript object syntax nested