【问题标题】:Using a string within as a function name (Javascript)使用其中的字符串作为函数名 (Javascript)
【发布时间】:2017-01-03 10:10:05
【问题描述】:

好吧,这个标题可能不正确,但我真的不知道如何问这个问题:我正在使用 Discord.js 编写一个机器人,我正在尝试根据给出的消息从枚举中回复一个字符串.

const Heroes = {
VengefulSpirit: {
inCaptainsMode: true,
primaryAttribute:'Agility',
    attributeGains:{
    Strength: 2.6,
    Agility: 3.3,
    Intelligence: 1.5
    },

},
}

这是输入

case 'venge': case 'vengeful spirit': case 'Vengeful Spirit':
message.reply(getHeroDetails('VengefulSpirit'));

遗憾的是输出不起作用

function getHeroDetails(heroName){
var heroDetails = '';
heroDetails += 'Primary Attribute: ';
heroDetails += Heroes.heroName.primaryAttribute.toString();
heroDetails += '\n In captain\'s mode: ';
heroDetails += Heroes.heroName.inCaptainsMode.toString();
heroDetails += '\n Strength gain: ';
heroDetails += Heroes.heroName.attributeGains.Strength.toString();
heroDetails += '\n Agility gain: ';
heroDetails += Heroes.heroName.attributeGains.Agility.toString();
heroDetails += '\n Intelligence gain: ';
heroDetails += Heroes.heroName.attributeGains.Intelligence.toString();
return heroDetails;
}

现在我使用 heroName 作为输入字符串,所以在这种情况下它将是 VengefulSpirit,如果我在所有这些调用中使用它来替换 heroName,那么该函数可以正常工作。我只是不知道如何使用 heroName 而不是为每个英雄硬编码一个函数(大约有 112 个)。我正在尝试创建一个动态函数,以使其更短。

【问题讨论】:

    标签: javascript string function enums


    【解决方案1】:

    使用Heroes[heroName] 来访问您的Heroes 对象的键,而不是Heroes.heroName

    【讨论】:

      【解决方案2】:

      使用:Heroes[heroName]。点符号在这种情况下不起作用...... 祝你的 RPG 好运 ;)

      【讨论】:

        猜你喜欢
        • 2017-05-29
        • 2017-12-11
        • 1970-01-01
        • 2019-11-23
        • 2010-09-26
        • 2014-02-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多