【问题标题】:Chaining in Javascript without setting state在 Javascript 中链接而不设置状态
【发布时间】:2010-09-20 02:42:48
【问题描述】:

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

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

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

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

我怎样才能更好地实现这一点?

【问题讨论】:

    标签: javascript jquery method-chaining


    【解决方案1】:

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

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

    【讨论】:

    • 喜欢它,这就是我的想法,所以得到一些确认是件好事。
    【解决方案2】:

    您的findBy 方法应该返回一个带有withValue 方法的单独对象。 (可能还有startsWith,但没有不相关的方法)

    【讨论】:

      【解决方案3】:

      看起来findBy() 可以通过withValue() 方法实现为一个单独的对象,但看起来withValue() 不应该是HospitalCoverDataStore 的方法。

      【讨论】:

        猜你喜欢
        • 2020-03-03
        • 1970-01-01
        • 2018-10-29
        • 2021-10-17
        • 2019-02-11
        • 1970-01-01
        • 2016-11-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多