Quelle est la différence entre l'initialisation et de constructeur sur une dorsale modèle
Quelle est la différence entre l'initialisation et de constructeur sur une dorsale modèle.
Lorsque je souhaite une épine dorsale modèle (ParentModel) j'utilise la méthode initialize est de définir toutes les propriétés par défaut. Mais chaque fois que je créer un Modèle basé sur la ParentModel je utiliser le constructeur pour exécuter tout intial de la fonctionnalité. Je le fais parce que cela fonctionne, mais quelqu'un au travail m'a demandé pourquoi j'utilise à la fois d'initialisation et de constructeur et je n'ai pas eu une bonne réponse en dehors de cela fonctionne. Je pourrais passer du temps à la lecture, bien que le code source pour comprendre, mais il semble beaucoup plus facile à poser ici et obtenir la bonne réponse.
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
},
- Sachez que, tout comme votre
constructor()
appelle la baseconstructor()
, votre remplacement deinitialize()
devraient commencer (au moins dans le cas où vous êtes en utilisant ce modèle, jusqu'à peut-être déjà un modèle étendu) avec<base>.initialize.apply(this, arguments);
, afin de permettre à toute la base définie parinitialize()
à exécuter en premier. (Cela m'a pris dans JointJS, qui dispose déjà de son propreinitialize()
défini un certain nombre de ses propres modèles dérivés.)
Vous devez vous connecter pour publier un commentaire.
constructor
s'exécute avant de la Dorsale met en place la structure.initialize
est appelée à l'intérieur de la structureconstructor
fonction. Donc, fondamentalement, si vous avez besoin de développer quoi que ce soit avant de la Dorsale met en place la structure, l'utilisationconstructor
si vous avez besoin de développer quoi que ce soit après épine Dorsale met en place la structure deinitialize
.(à partir d'un Github discussion sur le sujet)
constructor
est la fonction qui épine Dorsale utilise pour se créer des modèles, des événements, et toutes sortes de d'autres de l'installation. Être très prudent quant à la substitution de ce, parce que si vous voulez éviter de Squelette de code à partir de l'exécution par substitution ou de l'ombre à la méthode, vous obtiendrez des erreurs étranges qui sont difficiles à déboguer.initialize
sur l'autre main est une fonction qui épine Dorsale des appels sur ses objets une fois que c'est fini avec son plomberie interne. Si vous ne faites pas tout ce qui est spécifiquement destiné à interférer avec la normale épine Dorsale de la fonctionnalité, il suffit d'utiliser initialiser.Si vous utilisez CoffeeScript, il peut être plus intuitif à utiliser
constructor
. (C'est pour moi). Assurez-vous de toujours faire appel àsuper
, cependant.