code: function (dispatcher) {
  
      if (dispatchers.isDispatcher(dispatcher)) {
        this.dispatcher = dispatcher;
      } else {
        this.dispatcher = new dispatchers.Dispatcher();
      }
  
      var action = this;
      var prototype = Object.getPrototypeOf(this);
      Object.keys(prototype).forEach(function (method) {
        if (method !== 'dispatch') {
          action[method] = function () {
            var ret = prototype[method].apply(action, arguments);
            if (typeof ret !== 'undefined') {
              action.dispatch(ret);
            }
          };
        }
      });
    }
docs: New Action(dispatcher Dispatcher) :Action