私が見ているように、この質問にアプローチするには2つの方法があります。
あなたのデータは JSON stringとして転送されていると思います。応答に表示され、実行可能な配列とオブジェクトに変換するために
"[{\"key\":\"val\"}]"
それらを通過させます。JSON.parse
したがって、最初の方法は「クラスインスタンス」を作成することです(new
継承は必要ありません。データ型に基づいて、データをカプセル化し、インターフェースを公開するコンストラクター関数のみです)。
function makeTweet (data) {
var tweet = {
from_user : data.from_user || "anonymous",
/* ... */
},
toString = function () {},
public_interface : {
toString : toString,
/* getters, etc */
};
return public_interface;
}
あなたはすでにこのことを知っていると思いますが、同じプロセス内に 2 つまたは 3 つの異なるデータ型がある状況を考えてみてください (クライアントに印刷する準備ができたときの行末など)。そして、すべてのオブジェクトのパブリック フィールドを読み書きするプロセスがあります。異なるオブジェクトが異なるプロパティを持っている場合、物事は不十分に終わるか、不安定if
なステートメントの海で終わります。
それを見る他の方法は、エンティティ/サービスシステムかもしれません
function handleTweets (tweetArr) {
var templateFormat = system.output_format,
string = "";
if (templateFormat === "HTML") {
string = HTMLtemplateTweets(tweetArr);
} else { /* ... */ }
}
function HTMLtemplateTweets (tweetArr) {}
function JSONtemplateTweets (tweetArr) {}
function XMLtemplateTweets (tweetArr) {}
...
要点は、JSON 文字列をデータのみのオブジェクトの配列に変換し、それらをタイプ固有のライブラリ/システム関数の行にフィードすることです。
これは、OO (古典的に受け入れられている) アプローチではなく、非常に単純化されたエンティティ/システム アプローチに似ています。
ここで、データの安全性は、オブジェクトが意図した 1 つのパスのみを通過することを確認することから得られます。したがって、変換はそのタイプのすべてのオブジェクトに対して予測可能になります。
JSでパフォーマンス/メモリの目的で「継承」が必要な場合は、これも検討すべき方向かもしれません。