javascript - 有没有办法创建一个对象并同时为其分配一个动态属性?

标签 javascript

这可能是一个愚蠢的问题,但我正在寻找一种既可以使用对象字面量表示法创建对象,又可以为其分配动态属性的简洁方式。

现在,我是这样做的:

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/

相关文章:

javascript - 如何在 DOM CSS 中使用变量

javascript - 如何添加一个用户输入区域,就像 Wordpress 新的帖子区域一样?

javascript - 我怎样才能让我的标题不随着我的幻灯片在整页 js 中移动

javascript - 选择文本后插入 HTML 元素

javascript - Moment.js 从 MySQL 日期时间返回错误值

javascript - 抓取网页并获取所有动态 Javascript 链接

javascript - 如何使下一个/上一个按钮出现在滚动条之外,我使用 jQuery 缩略图滚动条

javascript - 如何使用 createBottomTabNavigator 为每个选项卡使用不同的图标?

javascript - 使用 .text() 的 jquery 能够更改 Bootstrap 类第一个跨度但不能更改第二个跨度

javascript - 使用 Lodash 根据另一个对象的真实状态获取对象的值