Qual è la differenza tra inizializzazione e costruttore su un modello backbone.Qual è la differenza tra inizializzazione e costruttore su un modello backbone
Quando estendo un modello backbone (ParentModel), utilizzo il metodo di inizializzazione per impostare le proprietà predefinite. Ma ogni volta che creo un modello basato su ParentModel, utilizzo il costruttore per eseguire qualsiasi funzionalità iniziale. Lo faccio perché funziona, ma qualcuno al lavoro mi ha chiesto perché utilizzo sia l'inizializzazione che il costruttore e non ho avuto una buona risposta a parte il suo funzionamento. Potrei passare il tempo a leggere il codice sorgente per capirlo, ma sembrava molto più facile chiedere qui e ottenere la risposta giusta.
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
},
Si noti che, proprio come 'constructor()' chiama la base 'constructor()', l'override di 'initialize()' dovrebbe iniziare (almeno nel caso in cui si stia utilizzando questo pattern per estendere ciò che potrebbe è già un modello esteso) con ' .initialize.apply (this, arguments);', per consentire a qualsiasi inizializzazione() 'definita da base di essere eseguita per prima. (Questo mi ha catturato in JointJS, che ha già il suo 'initialize()' definito su alcuni dei suoi modelli derivati.) –
JonBrave