What's the difference between initialize and constructor on a backbone model.
When I extend a backbone model (ParentModel) I use the initialize method to set any default properties. But whenever I create a Model based on the ParentModel I use the constructor to to run any intial functionality. I do this because it works but someone at work asked me why I use both initialize and constructor and I didn't have a good answer apart from it works. I could spend time reading though the source code to figure it out but it seemed much easier to ask here and get the right answer.
var ParentModel = Backbone.Model.extend({
initialize : function() {
// code here
},
});
var Model = ParentModel.extend({
constructor : function (options) {
Backbone.Model.prototype.constructor.call(this, options);
// code here
},
constructor()calls the baseconstructor(), your override ofinitialize()should start (at least in the case where you are using this pattern to extend what may already be an extended model) with<base>.initialize.apply(this, arguments);, to allow any base-definedinitialize()to run first. (This caught me out in JointJS, which already has its owninitialize()defined on certain of its own derived models.) - JonBrave