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扩展。代码中有vareventCity1
,vareventCity2
。。。对我来说也是如此。用户选择要查看的eventCity,并将该值传递给上面的代码。为了代码的可读性,如果可能的话,我宁愿维护varcurrentCity
。你真的不应该这样做。创建一个包含eventCities
的数组,以及一个包含整数的currentCityIndex
。然后做var currentCity=eventCities[currentCityIndex]
我终于同意了尼娜下面的答案,这真是不可思议!谢谢你的评论@Bergit这正是我想要的!谢谢@nina:)