Execute API initialization hook

@inner
@param {Function} init the initialization hook
@param {Array} args the API call arguments
@param {Object} ctx the extra call context for the hook
@return {*}
function hookAPIInit(init, args, ctx) {
    // API init interception
    if (isFunction(init)) {
        if (args.length > 1 || !isObject(args[0])) {
            // convert as one array type argument to make the developer
            // can modify the call arguments directly
            args = [args];
        }
        return init.apply(this, [...args, ctx]);
    }
}