2

ここに画像の説明を入力してください

最近、私は関数とオブジェクトの両方としてどのように機能するのかという質問にjQuery出くわしました。それを可能にしたのは、実際には(のような)プロパティが付加されjQueryた関数(したがって)でした。$()$.each()

今私のプロジェクトでは、モデル(技術的にはものの配列)を作成し、それにメソッドを追加して、それを保持する変数に戻したいと思います。このようにするのが賢明ですか?それは何かを妨害しますか?

//i did it like this:
function createModel(name){
    var model = internal.models[name] = [];
    model.add = function(){..logic to add to the model..}

    //more augmented methods here...

    return model;
}

//create a model
var myModel = createModel('test');

//then i can do add
myModel.add('foo');

Arrayそれに加えて、私は実際のプロトタイプのものをいじりたくありません。現在作成されているアレイに対してこれを行っています。


私が作成しているモデルは、データの単位であるBackbone.jsのモデルとは異なります。これは、Backbone.jsのコレクションまたはデータベーステーブルと同義です。

4

1 に答える 1

1

そのスタイルの何かがうまくいくかもしれませんし、モデルを配列として開始することも決してなく、常に関数(コンストラクター)と適切なオブジェクトを取り、それらはより柔軟です。

var model = function(data) {
    this.data = data;
};

model.prototype.getData = function() {
    return this.data;
};

var mod = new model({foo:'foo'});

mod.getData().foo
于 2012-04-13T12:41:24.677 に答える