Cuál es la diferencia entre inicializar y constructor en un modelo de red troncal.Cuál es la diferencia entre inicializar y constructor en un modelo de red troncal
Cuando amplío un modelo de red troncal (ParentModel) utilizo el método de inicialización para establecer las propiedades predeterminadas. Pero siempre que creo un Modelo basado en ParentModel utilizo el constructor para ejecutar cualquier funcionalidad inicial. Hago esto porque funciona, pero alguien en el trabajo me preguntó por qué uso tanto la inicialización como el constructor y no tenía una buena respuesta aparte de que funciona. Podría pasar tiempo leyendo el código fuente para resolverlo, pero me pareció mucho más fácil preguntar aquí y obtener la respuesta correcta.
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
},
Tenga en cuenta que, al igual que su 'constructor()' llama al constructor base '()', su anulación de 'initialize()' debería comenzar (al menos en el caso en que esté usando este patrón para extender lo ya sea un modelo extendido) con ' .initialize.apply (this, arguments);', para permitir que cualquier base definida 'initialize() 'se ejecute primero. (Esto me llamó la atención en JointJS, que ya tiene su propio 'initialize()' definido en algunos de sus propios modelos derivados.) –
JonBrave