Me gustaría plantear esto como una pregunta a this respuesta, pero parece que no puedo hacerlo, me disculpo.Extendiendo los valores predeterminados de una superclase modelo en Backbone.js
La extensión de los valores predeterminados para la subclase se refleja en la superclase. Esto parece frustrar el propósito y estoy más dispuesto a enumerar explícitamente los valores predeterminados de la superclase en la subclase para obtener la estructura que estoy buscando.
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);
Este salidas:
{cat: 3, dog: 5, rabbit: 25}
{cat: 3, dog: 5, rabbit: 25}
No es lo que (ni, supongo, la op) quieren:
{cat: 3, dog: 5}
{cat: 3, dog: 5, rabbit: 25}
Gracias, @JCorcuera. Debería haber mirado más de cerca a _.extend() para resolver esto. Un problema con esta solución, sin embargo, es si cambio los valores predeterminados de ExtendedInventory a '{dog: 15, rabbit: 25}' El valor de ExtendedInventory de 'dog' se sobrescribe de nuevo a' 5'. Supongo que volveré a 'for (a en this.eiDefaults) {this.attributes [a] = this.eiDefaults [a];}' en el método 'initialize' de ExtendedInventory. – mcdoh
@mcdoh mm tienes razón, pero el segundo funciona bien. – JCorcuera
Tiene razón, por lo que parece que su segunda solución es la forma de hacerlo. ¡Gracias por tu ayuda! – mcdoh