packages/okam-core/src/helper/factory.js
function initExtensions(type, instance, base) {
    let cache = pluginCache;
    if (process.env.APP_TYPE === 'quick') {
        if (!appGlobal.okamPluginCache) {
            appGlobal.okamPluginCache = pluginCache;
        }
        cache = appGlobal.okamPluginCache;
    }

    let existedBase = cache.baseClasses[type];
    if (!existedBase) {
        let plugins = cache.usedExtensions[type];
        let args = [{}];
        plugins && Array.prototype.push.apply(args, plugins);
        args.push(base);

        existedBase = mixin.apply(this, args);
        cache.baseClasses[type] = existedBase;
    }

    return mixin.apply(this, [instance, existedBase]);
}
function initExtensions(type, instance, base) {
    let cache = pluginCache;
    if (process.env.APP_TYPE === 'quick') {
        if (!appGlobal.okamPluginCache) {
            appGlobal.okamPluginCache = pluginCache;
        }
        cache = appGlobal.okamPluginCache;
    }

    let existedBase = cache.baseClasses[type];
    if (!existedBase) {
        let plugins = cache.usedExtensions[type];
        let args = [{}];
        plugins && Array.prototype.push.apply(args, plugins);
        args.push(base);

        existedBase = mixin.apply(this, args);
        cache.baseClasses[type] = existedBase;
    }

    return mixin.apply(this, [instance, existedBase]);
}
Initialize the extensions

@inner
@param {string} type the type to initialize
@param {Object} instance the instance to init
@param {Object} base the instance base to inherit
@return {Object}