这可能是一个愚蠢的问题,但我正在寻找一种既可以使用对象字面量表示法创建对象,又可以为其分配动态属性的简洁方式。
现在,我是这样做的:
var foo = "lol";
var obj = {};
obj[foo] = "bar";
return obj;
// --> returns {lol:"bar"}
我想做这样的事情:
var foo = "lol";
return ({}[foo] = "bar");
// --> returns {lol:"bar"}
是否有某种模式可以做到这一点?我不太关心可读性,尽管我正在寻找尽可能紧凑的东西。
我可以这样做,但它非常大,而且非常像将语句拆分成多行。
var foo = "lol", obj;
return (obj = {}) && (obj[foo] = "bar") && obj;
最佳答案
编写一个简单的函数,将名称:值对作为连续参数,例如:
function dataBlob() {
var args = arguments;
for(var x = 0; x < arguments.length -1; x=x+2) {
this[args[x]] = args[x+1];
}
return this;
}
假设我的 JavaScript 没有萎缩到上述毫无意义的程度,可以用作:
var obj = dataBlob("lol","bar", "lolz", 42);
这相当于 JSON-esque
var obj = {lol:"bar", lolz:42};
关于javascript - 有没有办法创建一个对象并同时为其分配一个动态属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20586909/