Javascript 访问对象属性时如何避免求值?

Javascript 访问对象属性时如何避免求值?,javascript,properties,eval,Javascript,Properties,Eval,我读了很多书,但我不明白以下几点: var eventCity = [ {date: 'Apr 11 2017', type: 'alpha'}, {date: 'Apr 26 2017', type: 'beta'} ]; var currentCity = 'eventCity'; // this is generated dynamically var aDate = eval(currentCity)[0].date; 如何避免使用eval()来维护相同的结果(a

我读了很多书,但我不明白以下几点:

var eventCity = [
    {date: 'Apr 11 2017', type: 'alpha'},
    {date: 'Apr 26 2017', type: 'beta'}
];

var currentCity = 'eventCity';  // this is generated dynamically

var aDate = eval(currentCity)[0].date;
如何避免使用
eval()
来维护相同的结果(
aDate='2017年4月11日'

变量选项=[]

选项['eventCity']=[ {日期:'2017年4月11日',键入:'alpha'}, {日期:'2017年4月26日',键入:'beta'}]


为什么不使用对象并将动态值作为键

var object = {
        eventCity: [
            { date: 'Apr 11 2017', type: 'alpha' },
            { date: 'Apr 26 2017', type: 'beta' }
        ]
    },
    currentCity = 'eventCity',  // this is generated dynamically
    aDate = object[currentCity][0].date;

currentCity
可能还有哪些其他值,那么它应该评估什么?为什么/在哪里动态生成?为什么不动态生成
var currentCity=eventCity
并删除
eval
?@Bergi我正在编写一个Chrome扩展。代码中有var
eventCity1
,var
eventCity2
。。。对我来说也是如此。用户选择要查看的eventCity,并将该值传递给上面的代码。为了代码的可读性,如果可能的话,我宁愿维护var
currentCity
。你真的不应该这样做。创建一个包含
eventCities
的数组,以及一个包含整数的
currentCityIndex
。然后做
var currentCity=eventCities[currentCityIndex]
我终于同意了尼娜下面的答案,这真是不可思议!谢谢你的评论@Bergit这正是我想要的!谢谢@nina:)