context.js 633 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('实例化上下文参数错误');
        }
        let params = _.slice(args, 1, args.length);
        let cls = new args[0](...params);

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

module.exports = Context;