context.js 595 Bytes
/**
 * 上下文基类,所有继承自该类的类携带上下文,子类中需要传递上下文,使用this.instance函数创建携带上下文的实例
 * @author: feng.chen<feng.chen@yoho.cn>
 * @date: 2017/04/14
 */
const _ = require('lodash');

class Context {
  setContext(ctx) {
    this.ctx = ctx;
  }
  instance(...args) {
    if (args.length === 0) {
      throw Error('实例化上下文参数错误');
    }
    const params = _.slice(args, 1, args.length);
    const cls = new args[0](...params);

    cls.setContext(this.ctx);
    return cls;
  }
}

module.exports = Context;