code: function Requester(options, context) {
          this.uid = createUID();
          this.resolver = new Resolver();
          this.promise = this.resolver.promise();
          this.context = context;
          this.handleSuccess = false;
          this.handleFail = false;
  
          options = options || {};
          // 触发全局`before`事件
          context.emit('before', this, options);
  
          // 请求头设置
          options.headers = extend({}, context.data.headers, options.headers);
  
          // 请求方法设置
          options.method = options.method || METHOD.GET;
  
          // 添加默认的请求头标示
          options.headers['X-Requested-With'] = 'XMLHttpRequest';
  
          // 对GET请求进行处理
          // 注意此时由于平台限制没有对POST进行处理（默认请求头与数据处理）
          // 需要在后续Kernel做处理
          var url = options.url;
          var data = options.data;
          if (options.method === METHOD.GET && data) {
              if (options.stringify !== false
                  && !util.isString(data)
              ) {
                  data = util.stringify(data);
              }
              url = util.append(url, data);
              data = '';
          }
          options.data = data;
          this.url = url;
  
          // 添加请求地址前缀
          ['prefix', 'host'].forEach(function (item) {
              item = context.data[item];
              if (item) {
                  url = item + url;
              }
          });
          options.url = url;
  
          // 发起请求
          this.xhr = new Kernel(options, this);
  
          // 在请求完成后触发全局事件
          this.promise.then(
              bind(context.emit, context, 'success', this),
              bind(context.emit, context, 'fail', this)
          );
      }
docs: 请求对象
  
  @constructor
  @param {Object} options 配置参数
  @param {string} options.url 请求地址
  @param {string} options.method 请求方法
  @param {string=} options.data 请求数据
  @param {Object=} options.headers 请求头信息
  @param {Object} context 执行环境