我关注code
:
constants.js
(定义以下constants
)
var STATE_NOT_STARTED = 27;
var STATE_IN_PROGRESS = 28;
var STATE_DEFERRED = 29;
var STATE_CANCELLED = 30;
var STATE_COMPLETED = 31;
app.js
(定义以下object
):
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]
}
}
现在我有一个函数可以获得一个值。该值可以是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
}
为什么我使用undefined
语句获取App.rules[value]
。
根据括号表示法,我应该可以像这样检索object
key
。
注意:
即使我这样做也不起作用:App.rules[STATE_NOT_STARTED]
或任何其他常量值。
它只是这样:App.rules.STATE_NOT_STARTED
但由于值是动态的,我不确定传递给函数时值参数是什么
答案 0 :(得分:2)
App.rules.STATE_NOT_STARTED !== STATE_NOT_STARTED // 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]
}
}