速记方式构建具有可变属性名JS对象[复制](Shorthand way to construct J

2019-06-26 00:53发布

这个问题已经在这里有一个答案:

  • 如何使用一个变量在JavaScript的主要对象常量? 12个回答

有没有创建一个属性字段变量中的对象的简便方法?

说我有可变PROP.Todo.PRIORITY = 'priority' ,然后,利用骨干在这个例子中,我要救这个属性,我怎么能避免创建新的对象,将其分配给某个变量,然后设置属性?

我想实现这一点:

var tmpObj = {};
tmpObj[PROP.Todo.PRIORITY] = "high";
this.model.save(tmpObj);

我已经试过这样的事情,这是不成功的:

this.model.save(({}[PROP.Todo.PRIORITY] = "high"));

有什么建议? 我要另行编写大量的长手对象声明的。

Answer 1:

如果你只是想要一个简单的方法来创建对象,有关使用一个辅助功能怎么样?

function obj(prop, value) {
  var o = {};
  o[prop] = value;
  return o;
}

this.model.save(obj(PROP.Todo.PRIORITY, "high"));

我不知道我理解你的问题的后半部分:

我要另行创建大量的临时对象。

你必须在任何情况下创建一个对象,我怀疑创建对象是一个性能问题。



Answer 2:

如果您保存只有一个参数, Model.save有一个接收参数的另一种方式, (key,value,options)

http://backbonejs.org/#Model-save

保存 model.save([属性],[选项])
[...]与设定,您可以通过单独的键和值,而不是一个哈希值。 [...]

这意味着你可以写你的例子如

this.model.save(PROP.Todo.PRIORITY, "high");

如果你想同时保存多个属性,你就必须写一个临时对象。



文章来源: Shorthand way to construct JS object with variable property name [duplicate]