2016-04-26 3 views
1

Чтение через docs, я вижу, что вы можете заменить конструктор для расширения Backbone на класс модели. Но в чем разница между выполнением этого и выполнением этого метода инициализации? Не звоните ли вы, когда используете new?Магистральная модель: инициализировать против конструктора

var Library = Backbone.Model.extend({ 
    constructor: function() { 
    this.books = new Books(); 
    Backbone.Model.apply(this, arguments); 
    }, 
    parse: function(data, options) { 
    this.books.reset(data.books); 
    return data.library; 
    } 
}); 

против

var Library = Backbone.Model.extend({ 
    initialize: function() { 
    this.books = new Books(); 
    Backbone.Model.apply(this, arguments); 
    }, 
    parse: function(data, options) { 
    this.books.reset(data.books); 
    return data.library; 
    } 
}); 
+0

Возможный дубликат [Какая разница между инициализации и конструктору на магистральную модели] (http://stackoverflow.com/questions/10118988/whats-the-difference-between-initialize-and -constructor-на-магистральной-модель) –

ответ

2

"конструктор" запускается перед Backbone устанавливает структуру.
"initialize" вызывается внутри функции конструктора структуры.

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

От: https://github.com/jashkenas/backbone/issues/720

Смежные вопросы