code: function sum(O, defaultValue, _fn) {
              var i = void 0,
                  l = void 0,
                  tokenValue = void 0;
              if (isFunction(defaultValue) && typeof _fn === "undefined") {
                  _fn = defaultValue;
                  defaultValue = 0;
              }
              if (typeof defaultValue === "undefined") defaultValue = 0;
  
              if (isArray(O)) {
                  i = 0;
                  l = O.length;
                  for (; i < l; i++) {
                      if (typeof O[i] !== "undefined") {
                          if ((tokenValue = _fn.call(O[i], O[i])) === false) break;else if (typeof tokenValue !== "undefined") defaultValue += tokenValue;
                      }
                  }
                  return defaultValue;
              } else if (isObject(O)) {
                  for (i in O) {
                      if (typeof O[i] != "undefined") {
                          if ((tokenValue = _fn.call(O[i], O[i])) === false) break;else if (typeof tokenValue !== "undefined") defaultValue += tokenValue;
                      }
                  }
                  return defaultValue;
              } else {
                  console.error("argument error : ax5.util.sum - use Array or Object");
                  return defaultValue;
              }
          }
docs: @method ax5.util.sum
  @param {Array|Object} O
  @param {Number} [defaultValue]
  @param {Function} _fn
  @returns {Number}
  @example
  ```js
  var arr = [
  {name: "122", value: 9},
  {name: "122", value: 10},
  {name: "123", value: 11}
  ];
  
  var rs = ax5.util.sum(arr, function () {
  if(this.name == "122") {
  return this.value;
  }
  });
  console.log(rs); // 19
  
  console.log(ax5.util.sum(arr, 10, function () {
  return this.value;
  }));
  // 40
  ```