目前我可以做:

function addStat() {
player.str = player.str + 1;
}


但我希望能够对播放器对象使用除“ str”以外的其他功能。所以我决定做这样的事情:

function addStat(stat) {
player.stat = player.stat + 1;
}


但这似乎不起作用,我尝试查找使用参数的语法,但找不到与我所需方式类似的东西。

我了解了“ this”,但无法使其与我的功能配合使用。

我是这样想的:

function addStat(thing, stat) {
thing.stat = thing.stat + 1;
statReset();
}


会工作,但我知道为什么不行。我确保其余的javascript和html都可以正常工作,并且当我添加这些功能时,一切都没有中断,只是不起作用。

最佳答案

在为变量分配属性时,需要使用括号符号,而不是点符号。然后,这看起来像:

function addStat(stat) {
    (stat in player) ? ++player[stat] : player[stat] = 1;
}


由于评论(我不同意),我想我应该提到的是,由于您正在尝试修改可能不存在的属性,因此还应该添加安全检查以查看是否可以对其进行修改。

否则,您将修改undefined,这将导致不希望的输出。

关于javascript - 使用带有Javascript对象的参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28482123/

10-12 13:10