0
我想重写我的Backbone.Model
上的构造函数来调整传递给父构造函数的属性。这是我想要做的:重写Backbone.Model的构造函数?
Models.Item = Backbone.Model.extend({
constructor: function (attributes, options) {
Backbone.Model.apply(this, this.parse(attributes), options);
},
parse: function (attributes) { .... }
)};
我的问题是父构造函数调用未定义的参数。
https://github.com/jashkenas/backbone/blob/master/backbone.js#L254
var Model = Backbone.Model = function(attributes, options) {
var attrs = attributes || {};
options || (options = {});
this.cid = _.uniqueId('c');
this.attributes = {};
if (options.collection) this.collection = options.collection;
if (options.parse) attrs = this.parse(attrs, options) || {};
attrs = _.defaults({}, attrs, _.result(this, 'defaults'));
this.set(attrs, options);
this.changed = {};
this.initialize.apply(this, arguments);
};
的attributes
和options
参数都是未定义的,这意味着使用默认参数实例化模型。
现在我可以覆盖initialize
方法并取消设置不良属性,并将其替换为正确的属性。但是,这看起来像一个黑客。
为什么用未定义的参数调用父构造函数?
我错过了什么?
你为什么要发布一个你已经知道答案的问题?如果你发布一个问题,至少应该给予他人一个回答它的机会。 – Bart
因为我在问这个问题的时候想出了它,并且想写下来。随意提供你自己的答案。 – Martinffx