我从没想过我会遇到这样的问题,但是嘿你知道什么......
var prop = 'horses'
console.log({
prop: 1
});
如何让它生成一个具有属性horses
而不是prop
的对象,并且可能只在一行中完成?因为我可以想到一个解决方案,但我真正想要的是一个单行。
答案 0 :(得分:3)
您可以使用括号中的表示法:
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;
}
答案 1 :(得分:1)
尝试使用JSON创建对象:
console.log(JSON.parse("{\"" + prop + "\":\"1\"}");