JS を触るときには常識として押さえておくべき話だと思うのですが、 Backbone.js で View が所有する Model の指定方法についてハマってしまったので。
パターン1:プロパティでインスタンス化する
var View = Backbone.View.extend({
model: new Model, // Model は Backbone.Model を extend したオブジェクト
});
var view = new View();
パターン2:initializeメソッド(コンストラクタ)でインスタンス化する
var View = Backbone.View.extend({
initialize: function() {
this.model = new Model(); // Model は Backbone.Model を extend したオブジェクト
}
});
var view = new View();
一見すると、 パターン1 と パターン2 は同じことをやっているように見えますが、全く違うことをやっています。
パターン | 説明 |
---|---|
パターン1 | View オブジェクトを宣言したときに Model がインスタンス化される |
パターン2 | View オブジェクトがインスタンス化されるときに Model もインスタンス化される |
当然ながら、Collection についても同様です。
この違いを頭に入れて、有効に使い分けられると良いですね
(僕は失敗しました)
突っ込みどころ、誤った認識をしている箇所がありましたら是非ご指摘ください。