2

少し前に書いた JavaScript ライブラリを書き直しています。その目的は、オブジェクトの配列をテーブルとして表示し、サーバー通信なしで並べ替え、フィルター処理、および編集できるようにすることです。

現在のソリューションは、表示を操作するために必要な追加の属性でオブジェクトを「汚染」します。元のオブジェクトは次のようになります

{"name":"...","lastname":"...","age":27}

そして、このような追加の属性があります

{"name":"...","lastname":"...","age":27,"TTMDecode":true,"TTMChildren":[]}

別の解決策は、元のオブジェクトのみをラップしてから、これらのラッパーを使用することです。

{"decode":true,"children":[],"data":{"name":"...","lastname":"...","age":27}}

どちらのソリューションが望ましいかわかりません。 2 番目の解決策では、変更された場合に元のオブジェクトをサーバーに返す方が簡単ですが、JavaScript エンジンのオブジェクトの量が 2 倍になります。

このソリューションは 20,000 を超えるオブジェクトを扱うことができ、現在のブラウザーでは高速です。しかし、40.000 個のオブジェクトが問題になるでしょうか?

心配事を十分に説明できたと思います。

よろしく

4

2 に答える 2

2

必要なのはデザインパターンです。あなたはたまたますでに1つを使用しています。

まず、ビューだけに必要なものでモデルを汚してはなりません。これは、モデルに便利なメソッドや計算されたプロパティを含めることができないと言っているのと同じではありません。間違っていることを示す赤い旗は、DOM などのビュー レイヤーに固有の何かがモデルにある場合です。あなたの例に何があるかわかりませんTTMDecode...

2 つ目は、すでに設計パターンを使用しているということです。コンポジションを使用してモデル オブジェクト を装飾しています。

Decorator Pattern の説明についてはこれを参照してください。Composition の説明についてはこれを参照し
ください

私はあなたがうまくやっていると思います。

于 2012-07-10T20:27:09.947 に答える
2

まず、アーキテクチャの問題について: と の 2 つのプロパティを持つ親オブジェクトを作成してみませんdisplaydata? パフォーマンスの懸念のためにアーキテクチャを制限するべきではありません。効果がある場合は、パフォーマンスを測定するときに気付くでしょう。

var obj = {
    display: {
      // display data
    },
    data: {
      // personal data
    }
);

オブジェクト数に関する質問に暗黙のうちに答えますが、これは通常問題ではありません (オブジェクト自体が大きくない場合、パフォーマンスには影響しません)。

于 2012-07-10T20:28:29.047 に答える