我想构建一个像对象/类这样的 Backbone.Model。
我查看了 Backbone 文档,发现他们创建了一个具有可继承属性的可继承对象/类,方法分两步:
一、创建一个带有一些属性的函数
var Model = Backbone.Model = function(attributes, options) {
var defaults;
attributes || (attributes = {}); //?
if (options && options.parse) attributes = this.parse(attributes); //?
if (defaults = getValue(this, 'defaults')) {
attributes = _.extend({}, defaults, attributes); // ?
}
if (options && options.collection) this.collection = options.collection;
this.attributes = {};
this._escapedAttributes = {};
this.cid = _.uniqueId('c');
this.changed = {};
this._silent = {};
this._pending = {};
this.set(attributes, {silent: true});
this.changed = {};
this._silent = {};
this._pending = {};
this._previousAttributes = _.clone(this.attributes);
this.initialize.apply(this, arguments);
};
二、使用下划线的扩展来赋予它一些功能
_.extend(Model.prototype, Events, { // Events?
changed: null,
_silent: null,
_pending: null,
idAttribute: 'id',
initialize: function(){},
toJSON: function(options) {
return _.clone(this.attributes);
}
// other Model methods...
};
我对这种行为有一些疑问:
- 第一部分的第 3-4 行是做什么的
- 第 6 行会发生什么?
- 为什么我们要放弃“_.extend”Events 对象,我还能提供什么作为参数?
还有什么我需要注意的吗?
问候