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}更多的信息。非常感谢你的回答和给文档的链接。谢谢,它工作得很好。你能解释一下为什么索引应该用方括号括起来吗?@Hammadvara=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]
}
}