0

私が達成しようとしているのは、以前に定義されたクラスを fromBackbone.Modelまたはその逆のメソッドで拡張することです。基本的に、私のコードは次のようになります。

var SomeObject = function() {};
SomeObject.CLASS_ATTRIBUTE = 'something';
SomeObject.prototype.aFunction = function() { return Math.E; };
SomeObject.prototype.attrB = 'wat';

var SomeModel = Backbone.Model.extend({});

この時点で、機能を失うことなくモデル属性を含むよう に(またはその逆に)拡張SomeModelするにはどうすればよいでしょうか?SomeObjectCLASS_ATTRIBUTEaFunctionattrBBackbone.Model

回答ありがとうございます。

4

2 に答える 2

0

拡張とはどういう意味ですか?

  1. オブジェクトをマージしますか?
  2. カスタムの「メソッド」をに追加しSomeModelますか?
  3. SomeModelとのメソッドとプロパティの両方を持つ新しいオブジェクトを作成しますSomeObjectか?

JSFiddle


var SomeObject = function() {};
SomeObject.CLASS_ATTRIBUTE = 'something';
SomeObject.prototype.aFunction = function() { return Math.E; };
SomeObject.prototype.attrB = 'wat';
var SomeModel = Backbone.Model.extend({});

// Merging instances of objects
var newSomeObject = new SomeObject(),
    newSomeModel = new SomeModel(),
    mergedObjects = $.extend(true, newSomeModel, newSomeModel);

console.log(mergedObjects);

// Prototyping
var mergedProto = $.extend(true, SomeModel.prototype, SomeObject.prototype);
console.log(mergedProto);

//factory
var myMergefactory = function() {
    var ret = $.extend(true, SomeModel.prototype, SomeObject.prototype);
    return ret;
}

注意として、これも有効です...

var SomeModel = Backbone.Model.extend({});
SomeModel.CLASS_ATTRIBUTE = 'something';
SomeModel.prototype.aFunction = function() { return Math.E; };
SomeModel.prototype.attrB = 'wat';

またはこれ...

var SomeModel = Backbone.Model.extend({
    initialize: function (params) {
        $.extend(true, this, params.obj);
    }
});
var mObj = new SomeModel({obj: new SomeObject()});
于 2013-02-08T15:41:13.357 に答える
0

SomeObjectが次のように定義されている場合:

var SomeObject = {
  CLASS_ATTRIBUTE: 'something',
  aFunction: function () { return MATH.E; },
  attrB: 'wat'
}

それから

var SomeModel = Backbone.Model.extend({
 // ...
});

_.extend(SomeModel.prototype, SomeObject);

あなたがそれから要求したことをするでしょう

于 2013-02-08T15:28:12.133 に答える