将参数与Javascript对象一起使用?

将参数与Javascript对象一起使用?,javascript,Javascript,目前我可以做: function addStat() { player.str = player.str + 1; } 但是我希望能够在我的播放器对象中使用str以外的东西。所以我决定这样做: function addStat(stat) { player.stat = player.stat + 1; } 但这似乎不起作用,iv'e试图查找使用参数的语法,但找不到与我需要的方式类似的东西 我了解了这一点,但我无法让它与我的功能一起工作 我想: function addStat(thing,

目前我可以做:

function addStat() {
player.str = player.str + 1;
}
但是我希望能够在我的播放器对象中使用str以外的东西。所以我决定这样做:

function addStat(stat) {
player.stat = player.stat + 1;
}
但这似乎不起作用,iv'e试图查找使用参数的语法,但找不到与我需要的方式类似的东西

我了解了这一点,但我无法让它与我的功能一起工作

我想:

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

会有用的,但我知道为什么不行。我确保我的javascript和html的其余部分都能正常工作,当我添加这些函数时,没有任何中断,它就是不起作用。

当使用变量分配属性时,需要使用括号表示法,而不是点表示法。这样看来:

function addStat(stat) {
    (stat in player) ? ++player[stat] : player[stat] = 1;
}
由于我不同意的评论,我想我应该提到,由于您试图修改一个可能不存在的属性,您还应该添加一个安全检查,看看是否可以修改它


否则,您将修改未定义,这将导致不需要的输出。

使用变量分配属性时,需要使用括号表示法,而不是点表示法。这样看来:

function addStat(stat) {
    (stat in player) ? ++player[stat] : player[stat] = 1;
}
由于我不同意的评论,我想我应该提到,由于您试图修改一个可能不存在的属性,您还应该添加一个安全检查,看看是否可以修改它


否则,您将修改未定义,这将导致不需要的输出。

您可以使用[]访问属性:

function addStat(prop) {
    player[prop] = player[prop] + 1;
}

因此,调用addStatStatStat实际上会设置player.stat。

您可以使用[]访问属性:

function addStat(prop) {
    player[prop] = player[prop] + 1;
}

所以调用addStatStatStat实际上会设置player.stat.

在javascript中,语法

object.key
相当于

object["key"]
因此,thing.stat等同于thing[stat],即当您真正想要的是使用参数stat引用的值作为键时,键是文本字符串stat:

thing[stat] = thing[stat] + 1;

在javascript中,语法是

object.key
相当于

object["key"]
因此,thing.stat等同于thing[stat],即当您真正想要的是使用参数stat引用的值作为键时,键是文本字符串stat:

thing[stat] = thing[stat] + 1;

可能重复的@Andy-虽然您的评论是有效的,但与当前的问题无关。@Jamiec它用于设置新属性,不用于修改尚未存在的属性。@Alnitak-您如何修改不存在的内容?@NickDugger,我不同意。OP正在从使用特定键转移到可能为尚未存在的键传递参数。“我认为这值得一提。”尼克杜格,如果你不同意,你不应该把它加到你的答案中。这太奇怪了,伙计。@Andy-虽然你的评论是有效的,但与当前的问题无关。@Jamiec它用于设置新属性,而不用于修改尚不存在的属性。@Alnitak-你怎么能修改不存在的东西?@NickDugger,我不同意。OP正在从使用特定键转移到可能为尚未存在的键传递参数。“我认为这值得一提。”尼克杜格,如果你不同意,你不应该把它加到你的答案中。这太奇怪了,伙计。不,它会在player.stat中添加1,前提是这个键存在。OP post也会这样假设。没有签入原始代码。OP不会假设这一点,因为他可能会决定为一个还不存在的键传入一个参数。我认为这是值得一提的。不,它会在player.stat中添加1,前提是该键存在。OP post也会这样假设。没有签入原始代码。OP不会假设这一点,因为他可能会决定为一个还不存在的键传入一个参数。我认为这值得一提。