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]);
}
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}
Initialize the extensions