If you want to use Backbone.js’s extend function on your own class, all you have to do is this:
var LightModel = function(attributes, options) {
this.attributes = _.extend({}, attributes);
}
_.extend(LightModel.prototype, Backbone.Events, {
get: function(key) { return this.attributes[key]; },
set: function(key_or_values, value) {
if (typeof key_or_values == 'string') {
this.attributes[key_or_values] = value;
} else {
_.extend(this.attributes, key_or_values);
}
}
});
LightModel.extend = Backbone.extend;
Backbone’s extend function is the same between Backbone’s classes. It just uses the prototype it was called with. MyModel1 and MyModel2 in the following example would be equivalent:
var MyModel1 = Backbone.Model.extend({});
var MyModel2 = Backbone.View.extend.call(Backbone.Model, {});