В чем разница между инициализацией и конструктором на базовой модели.В чем разница между инициализацией и конструктором на базовой модели
Когда я расширяю базовую модель (ParentModel), я использую метод initialize для установки любых свойств по умолчанию. Но всякий раз, когда я создаю модель на основе ParentModel, я использую конструктор для запуска любых функциональных возможностей. Я делаю это, потому что это работает, но кто-то на работе спросил меня, почему я использую как инициализацию, так и конструктор, и у меня не было хорошего ответа, кроме того, что он работает. Я мог бы потратить время на чтение, хотя исходный код, чтобы понять это, но было гораздо проще спросить здесь и получить правильный ответ.
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()' вызывает конструктор base() ', вы должны начинать переопределять' initialize() '(по крайней мере, в том случае, если вы используете этот шаблон для расширения того, что может уже являетесь расширенной моделью) с ' .initialize.apply (this, arguments);', чтобы разрешить запуск с помощью инициализации() сначала определяемой базой. (Это уловило меня в JointJS, у которого уже есть свой 'initialize()', определенный на некоторых из его собственных производных моделей.) –
JonBrave