1

我需要使用一组函数来扩展backbone.collection:

例子:

var collection1 = Backbone.Collection.extend({});
var collection2 = Backbone.Collection.extend({});

应该有以下自定义方法:

console.log(collection1.method1); // function () {}
console.log(collection1.method2); // function () {}

另一方面

var collection3 = Backbone.Collection.extend({});

不应该有这些方法。

console.log(collection3.method1); // undefined

如何仅为 collection1 和 collection2 而不是为 collection3 扩展 Backbone.Collection?

4

2 回答 2

10

你的意思是这样的:

var CustomCollection = Backbone.Collection.extend({
    method1: function() {},
    method2: function() {}
});
var collection1 = CustomCollection.extend({});
var collection2 = CustomCollection.extend({});

var collection3 = Backbone.Collection.extend({});
于 2012-07-30T13:29:44.750 回答
4

按照 Marionette 示例,您应该向对象类的原型属性添加属性或方法:

无论如何,以下代码等效于@anto_byrma。
但是这种方法的优点是您可以以相同的方式扩展集合或模型或视图。

var obj = {
    method1: function() {},
    method2: function() {}
};

var collection1 = Backbone.Collection.extend({});
var collection2 = Backbone.Model.extend({});
var collection3 = Backbone.Collection.extend({});

_.extend(collection1.prototype, obj);
_.extend(collection2.prototype, obj);
于 2012-07-31T07:51:30.263 回答