2016-04-26 8 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の可能性のある重複 - バックボーンモデル構築者) –

答えて

2

"コンストラクタ" が実行されます。
"initialize"は、構造体のコンストラクタ関数内で呼び出されます。

つまり、バックボーンが構造を設定する前にオブジェクトに何かを追加する必要がある場合は、「コンストラクタ」を使用するとよいでしょう。バックボーンが構造体を設定した後にオブジェクトに何かを追加する必要がある場合は、 "initialize"を使用できます。

から:https://github.com/jashkenas/backbone/issues/720