几个对象的一个​​功能

时间:2015-06-04 22:18:51

标签: javascript function

我最近加入了大量的增量/ IDLE浪潮,并希望用Javascript同时制作一个小项目来学习它并停止像奴隶这样的教程,并尝试像我一样学习,并使用我的旧技能。

我会说我对谷歌的东西很不错,但这一次,我投降提出了一个问题。无法找到正确的单词或"语法"谷歌。

这是我的问题:

我有一个对象(?):

var weapon = {
    stick:      { cost: 50, attack: 1, owned: 0 },
    mace:       { cost: 250, attack: 5, owned: 0 },
    sword:      { cost: 1000, attack: 15, owned: 0 },
    bow:        { cost: 4000, attack: 50, owned: 0 }
};

这就像我的升级"。

<button onclick='buyWeapon("stick")' class="btn btn-info btn-block">BUY STICK (COST: <span id="stickCost">x</span>)</button>

<button onclick='buyWeapon(stick)' class="btn btn-info btn-block">BUY STICK (COST: <span id="stickCost">x</span>)</button>

这就是我想要的&#34;用这个功能购买它们:

function buyWeapon(foo) {
    if ( gamedata.player.currency >= weapon.foo.cost ) {
        gamedata.player.currency -= weapon.foo.cost;
        weapon.foo.owned++;
        weapon.foo.cost *= 1.10;
        gamedata.player.attack += weapon.foo.attack;
    } else {
        window.alert("Not enough cash!");
    };
};

当我尝试这个时,我在JS控制台中得到它:

  

未捕获的ReferenceError:未定义棒

这个没有&#34; &#34;

  

未捕获的TypeError:无法读取属性&#39;成本&#39;未定义的

这个与&#34; &#34;

1 个答案:

答案 0 :(得分:1)

首先,您需要在onclick属性中正确使用引号。

<button onclick="buyWeapon('stick')" class="btn btn-info btn-block">BUY STICK (COST: <span id="stickCost">x</span>)</button>

你遇到的问题是,stick周围没有引号,它被视为变量而不是字符串。

其次,在buyWeapon函数中,您需要正确引用武器对象中的对象。

weapon[foo].cost

如果您执行weapon.foo.cost,则会在foo中查找属性weapon,但您真正想要的是在weapon中找到与{的值相匹配的属性{1}}所以我们foo。它被称为括号表示法。你可以read more about the differences on MDN