В чем разница между инициализацией и конструктором на базовой модели
в чем разница между инициализацией и конструктором на базовой модели.
когда я расширяю базовую модель (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
},
2 ответов:
constructorвыполняется до того, как магистраль настроит структуру.initializeвызывается внутри структуры . Поэтому в основном, если вам нужно что-то увеличить до того, как Backbone настроит структуру, используйтеconstructorЕсли вам нужно увеличить что-нибудь после того, как костяк настраивает структуру, используйтеinitialize.
constructorЭто функция, которую Backbone использует для настройки себя-создание моделей, настройка событий и выполнение всех видов других настроек. Будьте очень осторожны с переопределением этого, потому что если вы предотвратите запуск магистрального кода путем переопределения или затенения метода, вы получите странные ошибки, которые трудно отлаживать.
initializeС другой стороны, это функция, которая вызывает магистраль на своих объектах, как только она закончила с ее внутренней сантехникой. Если ты ничего не делаешь это специально предназначено для вмешательства в нормальную функциональность магистрали, просто используйте initialize.если вы используете CoffeeScript, это может быть более интуитивно понятным в использовании
constructor. (Это для меня). Просто убедитесь, что вы всегда звонитеsuper, хотя.
Comments