我想将此作为一个问题提出来this答案,但我似乎无法这样做,我很抱歉。在Backbone.js中扩展Model超类的默认设置
扩展子类的默认值反映在超类中。这似乎破坏了目的,我更倾向于在子类中明确列出超类的默认值,以获得我正在寻找的结构。
var Inventory = Backbone.Model.extend({
defaults: {
cat: 3,
dog: 5
}
});
var ExtendedInventory = Inventory.extend({
});
_.extend(ExtendedInventory.prototype.defaults, {rabbit: 25});
var i = new Inventory();
var ei = new ExtendedInventory();
console.log(i.attributes);
console.log(ei.attributes);
此输出:
{cat: 3, dog: 5, rabbit: 25}
{cat: 3, dog: 5, rabbit: 25}
不是我(也不是,我认为,在op)想:
{cat: 3, dog: 5}
{cat: 3, dog: 5, rabbit: 25}
谢谢,@JCorcuera。我应该更仔细地研究_.extend()来解决这个问题。但是,这个解决方案的一个问题是,如果我将ExtendedInventory的默认值更改为'{dog:15,rabbit:25}''''''''''''''的ExtendedInventory值被覆盖回到'5'。我想我会在ExtendedInventory的'initialize'方法中返回'for(for this.iDefaults){this.attributes [a] = this.eiDefaults [a];}'。 – mcdoh
@mcdoh毫米你是对的,但第二个工作正常。 – JCorcuera
你是对的,所以看起来你的第二个解决方案就是解决这个问题的方法。谢谢你的帮助! – mcdoh