4

有没有一种简写的方法来创建一个带有属性字段变量的对象?

假设我有变量PROP.Todo.PRIORITY = 'priority',然后在这个例子中使用Backbone,我想保存这个属性,我怎样才能避免创建一个新对象,将它分配给某个变量然后设置属性?

我想实现这一点:

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

我尝试过这样的事情,但没有成功:

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

有什么建议么?否则我会写很多长篇的对象声明。

4

2 回答 2

4

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

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

save model.save([attributes], [options])
[...] 与 set 一样,您可以传递单个键和值而不是散列。[...]

这意味着您可以将示例编写为

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

如果要同时保存多个属性,则必须编写一个临时对象。

于 2012-07-04T10:05:55.227 回答
2

如果您只是想要一种更简单的方法来创建对象,那么使用辅助函数怎么样?

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

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

我不确定我是否理解您问题的后半部分:

否则我将创建很多临时对象。

无论如何,您都必须创建一个对象,我怀疑创建对象是一个性能问题。

于 2012-07-04T10:06:41.443 回答