В чем разница между инициализацией и конструктором на базовой модели



в чем разница между инициализацией и конструктором на базовой модели.



когда я расширяю базовую модель (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
},
464   2  

2 ответов:

constructor выполняется до того, как магистраль настроит структуру. initialize вызывается внутри структуры . Поэтому в основном, если вам нужно что-то увеличить до того, как Backbone настроит структуру, используйте constructor Если вам нужно увеличить что-нибудь после того, как костяк настраивает структуру, используйте initialize.

(от обсуждение Github на эту тему)

constructor Это функция, которую Backbone использует для настройки себя-создание моделей, настройка событий и выполнение всех видов других настроек. Будьте очень осторожны с переопределением этого, потому что если вы предотвратите запуск магистрального кода путем переопределения или затенения метода, вы получите странные ошибки, которые трудно отлаживать.

initialize С другой стороны, это функция, которая вызывает магистраль на своих объектах, как только она закончила с ее внутренней сантехникой. Если ты ничего не делаешь это специально предназначено для вмешательства в нормальную функциональность магистрали, просто используйте initialize.

если вы используете CoffeeScript, это может быть более интуитивно понятным в использовании constructor. (Это для меня). Просто убедитесь, что вы всегда звоните super, хотя.

Comments

    Ничего не найдено.