javascript backbone.js

javascript - ¿Cuál es la diferencia entre inicializar y constructor en un modelo de red troncal?



backbone.js (2)

constructor ejecuta antes de que Backbone configure la estructura. initialize se llama dentro de la función constructor la estructura. Así que, básicamente, si necesita aumentar algo antes de que Backbone configure la estructura, use el constructor si necesita aumentar algo después de que Backbone configure la estructura use initialize .

(de una discusión de Github sobre el tema )

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


constructor es la función que Backbone usa para establecerse a sí mismo, creando modelos, configurando eventos y realizando todo tipo de configuraciones. Tenga mucho cuidado al anular esto, porque si evita que el código Backbone se ejecute anulando o sombreando el método, obtendrá errores extraños que son difíciles de depurar.

initialize por otro lado, es una función que el Backbone llama a sus objetos una vez que ha terminado con su tubería interna. Si no está haciendo algo específicamente diseñado para interferir con la funcionalidad Backbone normal, solo use initialize.

Si está usando CoffeeScript, podría ser más intuitivo usar el constructor . (Es para mi). Solo asegúrate de llamar siempre super , sin embargo.