Цепочка в Javascript без установки состояния - PullRequest
0 голосов
/ 20 сентября 2010

Мне нравится способность jQuery к методам цепочек команд (.animate (). Css () и т. Д.), Которые в бэкэнде достигаются путем возврата специальной переменной "this".

Как я могу реализовать подобный методцепочки без необходимости устанавливать состояние в моем объекте.Возьмем для примера:

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

Эта цепочка методов запрашивает поле в хранилище данных "short_name", используя значение "sam".Я могу установить внутреннее состояние в «short_name», когда первый метод был вызван, затем искать это снова, когда вызывается withValue.Мне это кажется клуджем, хотя для начала я не могу выдать ошибку, если withValue вызывается перед findBy, так как он будет использовать последний параметр findBy.

Как мне лучше это реализовать?

Ответы [ 3 ]

3 голосов
/ 20 сентября 2010

Ваш метод findBy должен возвращать отдельный объект с методом withValue.(и, возможно, startsWith, но без других методов)

3 голосов
/ 20 сентября 2010

Вы можете заставить метод findBy возвращать другой объект, который инкапсулирует хранилище данных и имя поля, и который имеет метод withValue:

function findBy(field) {
  return {
    dataStore: this,
    field: field,
    withValue: function(value) {
      // query the dataStore and return result
    }
  };
}
0 голосов
/ 20 сентября 2010

Похоже, что findBy() может быть реализован как отдельный объект с методом withValue(), это не похоже на withValue(), должен быть методом для HospitalCoverDataStore.

...