我试图使用枚举来提取字符串,例如:
var INGREDIENT = { COFFEE: "coffee"}
然后想要成分的成本比例
var COST = { coffee: 1 }
但我想提取咖啡使用字符串:INGREDIENT.COFFEE如下:
var COST = {INGREDIENT.COFFEE: 1 }; //target
但它显示的错误.
不正确.
我正在诉诸:
var COST= {}; COST[INGREDIENT.COFFEE] = 1;
我正在做什么,阻止我像我一样做 //target
在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; }();
当然这很丑陋,但是如果你真的需要将一些对象构建代码压缩到一些你只能传递表达式的上下文中,那就太好了.