javascript - Extending the defaults of a Model superclass in Backbone.js -
i pose question this answer can't seem so, apologize.
extending defaults subclass reflected in superclass. seems defeat purpose , i'm more apt explicitly list superclass' defaults in subclass structure i'm looking for.
var inventory = backbone.model.extend({ defaults: { cat: 3, dog: 5 } }); var extendedinventory = inventory.extend({ }); _.extend(extendedinventory.prototype.defaults, {rabbit: 25}); var = new inventory(); var ei = new extendedinventory(); console.log(i.attributes); console.log(ei.attributes);
this outputs:
{cat: 3, dog: 5, rabbit: 25} {cat: 3, dog: 5, rabbit: 25}
not (nor, assume, op) want:
{cat: 3, dog: 5} {cat: 3, dog: 5, rabbit: 25}
the problem inventory.prototype.defaults
, extended.prototype.defaults
has same reference, because have not override reference.
so can in 2 ways, maybe more found 2:
edit: first example incorrect (see comments); please refer second.
var extendedinventory = inventory.extend({ defaults: { rabit:25 } }); _.extend(extendedinventory.prototype.defaults, inventory.prototype.defaults);
or
var extendedinventory = inventory.extend({ defaults: _.extend({},inventory.prototype.defaults, {rabit:25} ) });
i think first looks cleaner.
Comments
Post a Comment