访问定义为常量

时间:2017-12-21 13:00:04

标签: javascript javascript-objects

我关注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但由于值是动态的,我不确定传递给函数时值参数是什么

1 个答案:

答案 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] 
   }

}