在没有设置状态的情况下链接Javascript

时间:2010-09-20 02:42:48

标签: javascript jquery method-chaining

我喜欢jQuery的方法链命令(.animate(。。css()等)的能力,后端是通过返回特殊变量“this”来实现的。

如何在不必在对象中设置状态的情况下实现类似的链接方法。举个例子:

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

此方法链使用值“sam”查询数据存储区“short_name”中的字段。我可以在调用第一个方法时将内部状态设置为“short_name”,然后在调用withValue时再次查看该状态。这对我来说似乎是一个骗局,但是如果在findBy之前调用withValue,我将无法抛出错误,因为它将重用最后一个findBy设置。

我怎样才能更好地实现这个目标?

3 个答案:

答案 0 :(得分:3)

您的findBy方法应该使用withValue方法返回单独的对象。 (也许startsWith,但没有不相关的方法)

答案 1 :(得分:3)

您可以使findBy方法返回另一个对象,该对象封装数据存储区和字段名称,并且具有withValue方法:

function findBy(field) {
  return {
    dataStore: this,
    field: field,
    withValue: function(value) {
      // query the dataStore and return result
    }
  };
}

答案 2 :(得分:0)

看起来findBy()可以使用方法withValue()作为单独的对象实现,看起来withValue()应该是HospitalCoverDataStore的方法。