0

私は、バックエンドで特別な変数「this」を返すことによって実現されるコマンド(.animate()。css()など)をメソッド化するjQueryの機能が好きです。

オブジェクト内に状態を設定せずに、同様のチェーン方法を実装するにはどうすればよいですか。たとえば、次のようにします。

that.getHospitalCoverDataStore().findBy('short_name').withValue('sam');

このメソッドチェーンは、値「sam」を使用してデータストア「short_name」のフィールドをクエリします。最初のメソッドが呼び出されたときに内部状態を「short_name」に設定し、withValueが呼​​び出されたときにそれを再度検索できます。これは私には不満のように思えますが、最初は、findByの前にwithValueが呼​​び出された場合、最後のfindBy設定を再利用するため、エラーをスローすることはできません。

どうすればこれをより適切に実装できますか?

4

3 に答える 3

3

メソッドfindByは、メソッドとともに別のオブジェクトを返す必要がありますwithValue。(そしておそらくstartsWith、しかし無関係な方法はありません)

于 2010-09-20T02:48:29.550 に答える
3

findByメソッドに、データストアとフィールド名をカプセル化し、次のメソッドを持つ別のオブジェクトを返すようにすることができますwithValue

function findBy(field) {
  return {
    dataStore: this,
    field: field,
    withValue: function(value) {
      // query the dataStore and return result
    }
  };
}
于 2010-09-20T02:51:36.550 に答える
0

findBy()メソッドを使用して別のオブジェクトとして実装できるように見えますが、HospitalCoverDataStoreのメソッドである必要withValue()はないようです。withValue()

于 2010-09-20T02:47:59.363 に答える