code: function reduce(obj, iteratee, context) {
      var index = 0;
      var keys, length, store;
  
      context = context || null;
  
      if (!type.isArray(obj)) {
          keys = object.keys(obj);
          length = keys.length;
          store = obj[keys[index += 1]];
      } else {
          length = obj.length;
          store = obj[index];
      }
  
      index += 1;
      for (; index < length; index += 1) {
          store = iteratee.call(context, store, obj[keys ? keys[index] : index]);
      }
  
      return store;
  }
docs: Execute the callback function once for each element present in the array(or Array-like object or plain object).<br>
  If the object is Array-like object(ex-arguments object),
  It needs to transform to Array.(see 'ex2' of forEach example)<br>
  Callback function(iteratee) is invoked with four arguments:
  - The previousValue
  - The currentValue
  - The index
  - The object being traversed
  @param {Object} obj The object that will be traversed
  @param {function} iteratee Callback function
  @param {Object} [context] Context(this) of callback function
  @returns {*} The result value
  @memberof tui.util
  @example
  //-- #1. Get Module --//
  var util = require('tui-code-snippet'); // node, commonjs
  var util = tui.util; // distribution file
  
  //-- #2. Use property --//
  var result = util.reduce([0,1,2,3], function(stored, value) {
  return stored + value;
  });
  
  alert(result); // 6