将保持简短:我需要为我的应用程序构建不同的组件。我在这里所说的“组件”是一组方法和构造函数,它们在我的应用程序的许多地方重复出现,但不一定完全相同。
举个例子,考虑一个分页组件。它由几个方法、一个视图和一个模板组成:
var Pagination = function() {
this.View = Backbone.View.extend({});
this.method = function() {};
this.method2 = function() {};
};
// Create instance
var myComponent = new Pagination();
大量抽象的代码,但给出了想法。现在,我创建了一个“组件”构造函数来帮助我完成任务。这很简单:
Component = function() {
this.initialize.apply(this, arguments);
};
_.extend(Component.prototype, {
initialize: function() {}
});
Component.extend = Backbone.Model.extend;
这允许我用稍微不同的方法或内容构建同一组件的多个实例,而不必一遍又一遍地重建相同的东西:
var Pagination = Component.extend({
View: Backbone.View.extend({}),
method: function() {},
method2: function() {}
}};
// Create instance
var myComponent = new Pagination();
到目前为止,一切都很好。myComponent
具有方法列表以及视图的构造函数。这就是问题所在:对于我的一些组件实例,我不仅需要扩展组件本身,还需要扩展其中的 Backbone 构造函数。例如,假设我想扩展(而不是替换)分页组件中的视图。那就是一切都倒下了。
这是我采用的最后一种方法,但基本思想是:我的应用程序中的组件经常重复,但它们之间略有不同。这些组件可能包括方法、主干构造函数和其中的原始值。我需要能够扩展这些,但如果需要,也能够扩展它的各个部分(主干构造函数)。有人知道如何实现这一点吗?