1

私がこのモデルを持っている場合:

var myParentModel = Backbone.Model.extend({
   defaults:{ parent1: null,
              parent2: null}
)};

そして私は別のモデルを持っています:

var myModel = myParentModel.extend({
   defaults: {child1: null,
              child2: null}
)};

新しい myModel をインスタンス化する場合:

var mymodel = new myModel({child1: 'mychild1'});

属性プロパティでは、child2 プロパティをデフォルトに設定しただけですが、親モデルの親プロパティを継承する実装はどのようになっていますか?

4

4 に答える 4

3

github には、この問題に関する興味深い投稿があります。私が実装した解決策は次のとおりです。

myModel.prototype.defaults = 
    _.extend({
        child1: null,
                child2: null
    }, myParentModel.prototype.defaults, 
       myModel.prototype.defaults);

アンダースコア関数: extends を使用すると、親と子のプロトタイプを持つ新しいオブジェクトの既定値が得られます。これは、多重継承の優れたソリューションです。

于 2012-07-01T17:54:25.833 に答える
2

私はこれを使用しましたが、この時点で、同じスコープにいる場合はプロトタイプを使用する必要はありません:

var abstractDefaults = {
  parent1 : '',
  parent2 : ''
};
var MyParentModel = Backbone.Model.extend({
   defaults: abstractDefaults 
});
var MyModel = Backbone.Model.extend({
   defaults: _.extend( abstractDefaults, {
     child1 : '',
     child2 : ''
   } ) 
}); 
console.log(new MyModel().toJSON());
于 2012-07-02T22:56:04.240 に答える