Javascript 访问定义为常量的对象属性

Javascript 访问定义为常量的对象属性,javascript,javascript-objects,Javascript,Javascript Objects,我有以下代码: constants.js(定义以下常量) app.js(定义以下对象): 现在我有一个函数,在其中我得到一个值。该值可以是27、28、29、30或31。 我想根据得到的值获取规则的特定索引,如下所示: function execute(value) { App.rules[value]//This returns undefined, even if the value is 27,28,29,30 or 31 } 为什么我用语句App.rules[value]得到un

我有以下
代码

constants.js
(定义以下
常量

app.js
(定义以下
对象
):

现在我有一个函数,在其中我得到一个值。该值可以是27、28、29、30或31。 我想根据得到的值获取规则的特定索引,如下所示:

function execute(value)
{
   App.rules[value]//This returns undefined, even if the value is 27,28,29,30 or 31

}
为什么我用语句
App.rules[value]
得到
undefined
。 根据括号表示法,我应该能够像那样检索
对象

注: 即使我这样做,它也不起作用:
App.rules[STATE\u not\u STARTED]
或任何其他常量值。
它的工作原理如下:
App.rules.STATE\u NOT\u STARTED
,但由于该值是动态的,因此我不确定传递给函数时参数值是什么STATE\u NOT\u start//from constants.js

您要执行以下操作:

var App={

rules: { 
    [STATE_NOT_STARTED]:[STATE_IN_PROGRESS,STATE_COMPLETED,STATE_CANCELLED,STATE_DEFERRED],
    [STATE_IN_PROGRESS]: [STATE_COMPLETED,STATE_CANCELLED,STATE_DEFERRED],
    [STATE_DEFERRED]: [STATE_IN_PROGRESS],
    [STATE_CANCELLED]:  [STATE_IN_PROGRESS],
    [STATE_COMPLETED]: [STATE_IN_PROGRESS] 
   }

}

App.rules.STATE\u未启动!==STATE\u NOT\u start//from constants.js

您要执行以下操作:

var App={

rules: { 
    [STATE_NOT_STARTED]:[STATE_IN_PROGRESS,STATE_COMPLETED,STATE_CANCELLED,STATE_DEFERRED],
    [STATE_IN_PROGRESS]: [STATE_COMPLETED,STATE_CANCELLED,STATE_DEFERRED],
    [STATE_DEFERRED]: [STATE_IN_PROGRESS],
    [STATE_CANCELLED]:  [STATE_IN_PROGRESS],
    [STATE_COMPLETED]: [STATE_IN_PROGRESS] 
   }

}

谢谢,效果很好。你能解释一下为什么索引应该用方括号括起来吗?@Hammad
vara=45,varo={a:1}创建{A:1},因为这是创建文字对象的语法。当你想在一个文本对象上创建动态键时,你必须用不同的方式来编写它,相反:
o={[a]:1}
,这将在这里提供{45:1}更多的信息。非常感谢你的回答和给文档的链接。谢谢,它工作得很好。你能解释一下为什么索引应该用方括号括起来吗?@Hammad
vara=45,varo={a:1}创建{A:1},因为这是创建文字对象的语法。当您想要在文字对象上创建动态键时,您必须以不同的方式编写它,而应该这样做:
o={[a]:1}
,这将给出{45:1}这里的更多信息非常感谢您的回答和提供文档链接。对于常数,您应该使用
const
…当前使用ES5@JonasW。对于常数,您应该使用
const
…当前使用ES5@JonasW。
var App={

rules: { 
    [STATE_NOT_STARTED]:[STATE_IN_PROGRESS,STATE_COMPLETED,STATE_CANCELLED,STATE_DEFERRED],
    [STATE_IN_PROGRESS]: [STATE_COMPLETED,STATE_CANCELLED,STATE_DEFERRED],
    [STATE_DEFERRED]: [STATE_IN_PROGRESS],
    [STATE_CANCELLED]:  [STATE_IN_PROGRESS],
    [STATE_COMPLETED]: [STATE_IN_PROGRESS] 
   }

}