2012-04-13 4 views
2

enter image description hereプロパティ/メソッドを配列に拡張しますか?

最近、私はa question of how jQuery acts as both a function, as well as an objectに出くわしました。可能なことは、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のコレクション、またはデータベーステーブルと同義です。

答えて

1

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

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

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

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

mod.getData().foo 
+0

私の投稿を更新しました。実際には、コードは、参照用に新しく作成されたモデルを返す関数であり、操作用でもあります。 – Joseph

関連する問題