Javascript对象属性我从未想过我会在那样的问题绊倒,但嘿你知道什么..与变量名
var prop = 'horses'
console.log({
prop: 1
});
我怎么能有这样产生的对象,而不是用的属性horses
prop
,并可能在一行中完成?因为我可以想出一个解决方案,但是我真正想要的是一个单线。
Javascript对象属性我从未想过我会在那样的问题绊倒,但嘿你知道什么..与变量名
var prop = 'horses'
console.log({
prop: 1
});
我怎么能有这样产生的对象,而不是用的属性horses
prop
,并可能在一行中完成?因为我可以想出一个解决方案,但是我真正想要的是一个单线。
您可以使用括号表示法:
var obj = {};
obj[prop] = 1;
console.log(obj);
在JavaScript中,你可以参考属性或者通过点符号和文字名称(foo.bar
),或括号符号与字符串名(foo["bar"]
) 。在后一种情况下,字符串可以是任何表达式的结果,包括(在您的情况下)变量引用。
...但我真正想要的是一个班轮。
作为对象初始值设定项的一部分,没有办法做到这一点,但是,您必须单独执行该操作。如果你想要一个班轮,你需要做一个函数调用,如:
console.log(makeObj(prop, 1));
其中makeObj
是
function makeObj(propName, propValue) {
var obj = {};
obj[propName] = propValue;
return obj;
}
尝试使用JSON来创建对象:
console.log(JSON.parse("{\"" + prop + "\":\"1\"}");
没有必要为此启动JSON解析器。不过创意。 –
真正的单行:'var prop =“horses”; console.log((function(o,p){o [p] = 1; return o;})({},prop));' –