我喜欢jQuery的方法链命令(.animate(。。css()等)的能力,后端是通过返回特殊变量“this”来实现的。
如何在不必在对象中设置状态的情况下实现类似的链接方法。举个例子:
that.getHospitalCoverDataStore().findBy('short_name').withValue('sam');
此方法链使用值“sam”查询数据存储区“short_name”中的字段。我可以在调用第一个方法时将内部状态设置为“short_name”,然后在调用withValue时再次查看该状态。这对我来说似乎是一个骗局,但是如果在findBy之前调用withValue,我将无法抛出错误,因为它将重用最后一个findBy设置。
我怎样才能更好地实现这个目标?
答案 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的方法。