code: function (object, fn, context) {
              if (object) {
                  var key,
                      val,
                      keys,
                      i = 0,
                      length = object && object.length,
                  // do not use typeof obj == 'function': bug in phantomjs
                      isObj = length === undefined || toString.call(object) === '[object Function]';
  
                  context = context || null;
  
                  if (isObj) {
                      keys = S.keys(object);
                      for (; i < keys.length; i++) {
                          key = keys[i];
                          // can not use hasOwnProperty
                          if (fn.call(context, object[key], key, object) === false) {
                              break;
                          }
                      }
                  } else {
                      for (val = object[0];
                           i < length; val = object[++i]) {
                          if (fn.call(context, val, i, object) === false) {
                              break;
                          }
                      }
                  }
              }
              return object;
          }
docs: Executes the supplied function on each item in the array.
  @param object {Object} the object to iterate
  @param fn {Function} the function to execute on each item. The function
  receives three arguments: the value, the index, the full array.
  @param {Object} [context]
  @member KISSY