Andreas Köberle Andreas Köberle - 4 months ago 9
Javascript Question

Super in Backbone

When I override the

clone()
method of a
Backbone.Model
, is there a way to call this overriden method from my implantation? Something like this:

var MyModel = Backbone.Model.extend({
clone: function(){
super.clone();//calling the original clone method
}
})

Answer

You'll want to use:

Backbone.Model.prototype.clone.call(this);

This will call the original clone() method from Backbone.Model with the context of this(The current model).

From Backbone docs:

Brief aside on super: JavaScript does not provide a simple way to call super — the function of the same name defined higher on the prototype chain. If you override a core function like set, or save, and you want to invoke the parent object's implementation, you'll have to explicitly call it.

var Note = Backbone.Model.extend({
 set: function(attributes, options) {
 Backbone.Model.prototype.set.apply(this, arguments);
 ...
 }    
});