1

コレクションのコレクションを管理する方法を探しています。以下のコード例を参照してください。

function Collection() {
    this.items = []; //Contains items, which have a date associated with them
}
Collection.prototype.doSomethingOnItems = function(){};

function SuperCollection() {
    this.collections = []; //An array of Collection objects
    this.group = []; //A vector with a string that designates the group (e.g. 2013, 2012)
}
SuperCollection.prototype.groupCollections = function(items, groupType) {
    //Group by year, month, day, etc...
    //For example, given a timeframe of 2012-2013, items in 2012 are put in collections[1], those from 2013 are in collections[2]
}

このような構造を管理するためのより良い方法はありますか?

4

1 に答える 1

0

物事をできるだけ一般的/抽象的にするのが好きです

function Collection(items)
{
    // Could/should do some checking/coercion here 
    this.items = items || [];
};

Collection.prototype.add = Collection.prototype.push = function(item)
{
    this.items.push(item);
};

Collection.prototype.remove = function() {} ....

 // etc...

// A single Group
function Group(name, items)
{
    this.name = name;
    this.items = new Collection(items);
};

// A Collection of groups
function Groups()
{
    this.groups = new Collections();
};

または、グループのプロトタイプをコレクションのプロトタイプ (継承の形式) で拡張することもできます (jQuery やその他のライブラリを使用するか、独自に作成する)。

function Groups()
{

};

$.extend(Groups.prototype, Collection.prototype);

残りは次のとおりです。

var groups = new Groups();

groups.add(new Group("2013", []));

これらすべてにより、ロジックを分離したままにし、コレクションの「クラス」とは別のグループ/グループの「クラス」にヘルパー メソッドを含めることができます。

于 2013-06-17T01:25:45.197 に答える