我试图使用枚举来提取字符串,例如:
var INGREDIENT = { COFFEE: "coffee"}
然后想要成分的成本比例
var COST = { coffee: 1 }
但我想提取咖啡以使用字符串:INGREDIENT.COFFEE如下:
var COST = {INGREDIENT.COFFEE: 1 }; //target
但它显示.
不正确的错误。
我正在诉诸:
var COST= {};
COST[INGREDIENT.COFFEE] = 1;
我正在做什么,阻止我像我的//target
答案 0 :(得分:6)
在ES2015中你可以写
var COST = { [INGREDIENT.COFFEE]: 1 };
旧版本的JavaScript(仍然非常常用)不允许这样做,唯一的选择是通过[]
符号使用单独的赋值,如OP中所示:
var COST= {};
COST[INGREDIENT.COFFEE] = 1;
如果你不喜欢它是两个表达式,你总是可以利用函数的魔力:
var COST = function() {
var value = {};
value[INGREDIENT.COFFEE] = 1;
return value;
}();
当然这很丑陋,但是如果你真的需要将一些对象构建代码压缩到只能传递表达式的上下文中,那就太好了。