たとえば、 Person オブジェクトのデータなど、サーバーから JSON オブジェクトを受け取ったとします。
{firstName: "Bjarne", lastName: "Fisk"}
ここで、たとえば fullName を計算するために、これらのデータの上にいくつかのメソッドが必要です。
fullName: function() { return this.firstName + " " + this.lastName; }
私ができるように
var personData = {firstName: "Bjarne", lastName: "Fisk"};
var person = PROFIT(personData);
person.fullName(); // => "Bjarne Fisk"
ここで基本的にやりたいことは、オブジェクトのプロトタイプにメソッドを追加することです。このfullName()
メソッドは一般的なものであるため、データ オブジェクト自体に追加しないでください。お気に入り..:
personData.fullName = function() { return this.firstName + " " + this.lastName; }
... 多くの冗長性が発生します。そして間違いなくデータオブジェクトを「汚染」します。
そのようなメソッドを単純なデータ オブジェクトに追加する現在のベスト プラクティスの方法は何ですか?
編集:
トピックから少し外れますが、上記の問題が解決できれば、次のpattern matching
ような素敵な疑似処理を行うことができます。
if ( p = Person(data) ) {
console.log(p.fullName());
} else if ( d = Dog(data) ) {
console.log("I'm a dog lol. Hear me bark: "+d.bark());
} else {
throw new Exception("Shitty object");
}
Person
オブジェクトが適切な属性を持っている場合、メソッドをDog
追加します。data
そうでない場合は、falsy を返します (つまり、データが一致しない/一致しない)。
ボーナス質問:これを使用または有効にする(つまり、簡単にする)ライブラリを知っている人はいますか?それはすでにjavascriptパターンですか?もしそうなら、それは何と呼ばれていますか; 詳細なリンクはありますか?ありがとう :)