是否有创建具有属性字段变量的对象的简写方法?
说我有变量PROP.Todo.PRIORITY = 'priority'
然后,在这个例子中使用Backbone,我想save这个属性,我怎么能避免创建一个新对象,分配它一些变量,然后设置属性?
我想实现这个目标:
var tmpObj = {};
tmpObj[PROP.Todo.PRIORITY] = "high";
this.model.save(tmpObj);
我尝试过这样的事情,这是不成功的:
this.model.save(({}[PROP.Todo.PRIORITY] = "high"));
有什么建议吗?否则,我将编写很多长手对象声明。
答案 0 :(得分:4)
如果只保存一个参数,Model.save
有另一种接收参数的方式,(key,value,options)
http://backbonejs.org/#Model-save
保存 model.save([attributes],[options])
[...]与set一样,您可以传递单个键和值而不是散列。 [...]
这意味着您可以将您的示例写为
this.model.save(PROP.Todo.PRIORITY, "high");
如果要同时保存多个属性,则必须编写临时对象。
答案 1 :(得分:2)
如果您只想要一种更简单的方法来创建对象,那么如何使用辅助函数?
function obj(prop, value) {
var o = {};
o[prop] = value;
return o;
}
this.model.save(obj(PROP.Todo.PRIORITY, "high"));
我不确定我理解你问题的后半部分:
否则我会创建很多临时对象。
在任何情况下你都必须创建一个对象,我怀疑创建对象是一个性能问题。