我正在尝试这样做:
var KEYS = {} ;
KEYS.PHONE_TYPE = 'phone-type';
KEYS.AGENT_TYPE = 'agent-type';
var myAppConfig = {
...
iconMap : {
KEYS.PHONE_TYPE : 'icon-phone',
KEYS.AGENT_TYPE : 'icon-headphones'
};
...
};
但它失败了,有一条消息:Expected ':' and instead saw '.'.
如何使用间接(非文字)键名初始化对象?
要清楚,我想要的结果是:
{
'phone-type' : 'icon-phone',
'agent-type' : 'icon-headphones'
}
答案 0 :(得分:7)
您必须使用括号表示法单独添加这些属性:
var myAppConfig = {
...
iconMap : { }
...
};
myAppConfig.iconMap[ KEYS.PHONE_TYPE ] = 'icon-phone';
myAppConfig.iconMap[ KEYS.AGENT_TYPE ] = 'icon-headphones';
答案 1 :(得分:6)
如果您正在使用ES6(或像Babel / browserify这样的东西),您可以这样写:
iconMap : {
[KEYS.PHONE_TYPE] : 'icon-phone',
[KEYS.AGENT_TYPE] : 'icon-headphones'
};