docs: function reduce(O, _fn) {
              var i, l, tokenItem;
              if (isArray(O)) {
                  i = 0, l = O.length, tokenItem = O[i];
                  for (; i < l - 1;) {
                      if (typeof O[i] != "undefined") {
                          if ((tokenItem = _fn.call(root, tokenItem, O[++i])) === false) break;
                      }
                  }
                  return tokenItem;
              } else if (isObject(O)) {
                  for (i in O) {
                      if (typeof O[i] != "undefined") {
                          if ((tokenItem = _fn.call(root, tokenItem, O[i])) === false) break;
                      }
                  }
                  return tokenItem;
              } else {
                  console.error("argument error : ax5.util.reduce - use Array or Object");
                  return null;
              }
          }