whole_func_string: 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]);
      }
  }
func_code_string: 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]);
      }
  }
func_documentation_string: 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 {*}