code: function handleFields (root, space) {
  
              root = root || docJSON;
              var tmp = space ? root[space] : root;
              // var singleField = ['function', 'desc', 'namespace', 'class', 'event', 'attribute', 'type', 'prototype'].;
              // array
              if ( tmp.length && tmp.forEach ) {
  
                  var tmpFields = {};
                  // 通用处理
                  tmp.forEach(function (item) {
                      if ( singleTag.indexOf(item.key) > -1 ) {
                          tmpFields[item.key] = item.field;
                      } else {
                          tmpFields[item.key] = tmp.filter(function (field) {
                              return field.key === item.key ? true : false;
                          });
                      }
                  });
  
                  // rewrite
                  if ( space ) {
                      if ( tmpFields.param ) {
                          handleParamTree(tmpFields, 'param');
                      }
                      if ( tmpFields['return'] ) {
                          handleParamTree(tmpFields, 'return');
                      }
                      // handleParamTree(tmpFields);
                      handleFieldsTree(tmpFields);
                      root[space] = tmpFields;
                  }
  
              // object
              } else {
                  for ( var i in tmp ) {
                      handleFields(tmp, i)
                  }
              }
          }
docs: 递归整合相同key到同一数组中