What's the difference between initialize and constructor on a backbone model

backbone.js, javascript

Solution

`constructor` runs before Backbone sets up the structure. `initialize` is called inside the structure's `constructor` function. So basically if you need to augment anything before Backbone sets up the structure, use `constructor` if you need to augment anything after Backbone sets up the structure use `initialize`.

(from a Github discussion on the subject)

Problem

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 }, ```

Original source